gpt4 book ai didi

python - 遍历两个不同的 Pandas Dataframes

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:48 26 4
gpt4 key购买 nike

我有两个不同的数据框,我正在尝试比较它们。所以,我的第一个数据框有 10 行,第二个有 2,000 行。我想要做的是将我的第一个 df 中的第一行与另一个 df 中的所有 2,000 行进行比较。然后对我的第一个 df 中的下一行执行相同的操作。

这是我目前的代码。它在前 2,000 个中工作正常,然后当我应该增加时它崩溃了。

i = 1
j = 1
for u in userFrame.iterrows():
for d in dbFrame.iterrows():
if userFrame['tag'][i] == dbFrame['tag1'][j]:
print('Found one!:' + userFrame['tag'][i])
j += 1
i += 1

编辑:这是我遇到的错误:

  File "C:\Users\david\Desktop\CC Project\test.py", line 158, in Analyze
if userFrame['tag'][i] == dbFrame['tag1'][j]:
File "C:\Python34\lib\site-packages\pandas\core\series.py", line 557, in __getitem__
result = self.index.get_value(self, key)
File "C:\Python34\lib\site-packages\pandas\core\index.py", line 1790, in get_value
return self._engine.get_value(s, k)
File "pandas\index.pyx", line 103, in pandas.index.IndexEngine.get_value (pandas\index.c:3204)
File "pandas\index.pyx", line 111, in pandas.index.IndexEngine.get_value (pandas\index.c:2903)
File "pandas\index.pyx", line 157, in pandas.index.IndexEngine.get_loc (pandas\index.c:3843)
File "pandas\hashtable.pyx", line 303, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:6525)
File "pandas\hashtable.pyx", line 309, in pandas.hashtable.Int64HashTable.get_item (pandas\hashtable.c:6463)
KeyError: 1644

最佳答案

考虑一个 cross join pandas merge在两个数据帧之间,产生 10 X 2,000 条记录,其中较小数据集的每条记录与较大数据集的每条记录相匹配。 Cross Join是一个特殊的 SQL 查询,返回两个表之间的笛卡尔积(集合的所有可能组合)。本质上是一个没有连接子句的查询。

但是,在 pandas 中,您需要先在两个数据框中创建一个 key 变量并重命名列以避免重复的 tags。从那里您可以返回匹配的记录数据框并避免嵌套的 for 循环。由于您只需要第一行,因此您可以在 1 X 2,000 维度的交叉连接操作期间对数据帧进行切片。

userFrame['key'] = 1
dbFrame['key'] = 1

userFrame = userFrame.rename(columns = {'Tag':'Tag_U'})
dbFrame = dbFrame.rename(columns = {'Tag':'Tag_D'})

# CROSS JOIN MERGE (FIRST ROW OF USER DF, ALL ROWS OF DB DF)
crossjoindf = pd.merge(userFrame[:1], dbFrame, on='key')[['Tag_U', 'Tag_D']]

# MATCHING RECORDS
matchingdf = crossjoindf[crossjoindf['Tag_U'] == crossjoindf['Tag_D']]

关于python - 遍历两个不同的 Pandas Dataframes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com