gpt4 book ai didi

python - 使用 Pandas 查找两个不同大小的数据帧之间的不同行

转载 作者:行者123 更新时间:2023-11-30 22:17:00 33 4
gpt4 key购买 nike

我有 2 个不同大小的数据帧 df1 和 df2。

df1 = pd.DataFrame({'A':[np.nan, np.nan, np.nan, 'AAA','SSS','DDD'], 'B':[np.nan,np.nan,'ciao',np.nan,np.nan,np.nan]})
df2 = pd.DataFrame({'C':[np.nan, np.nan, np.nan, 'SSS','FFF','KKK','AAA'], 'D':[np.nan,np.nan,np.nan,1,np.nan,np.nan,np.nan]})

我的目标是识别 df1 中出现在 df2 中的元素。

我能够使用以下代码行实现我的目标。

df = pd.DataFrame({})
for i, row1 in df1.iterrows():

found = False
for j, row2, in df2.iterrows():

if row1['A']==row2['C']:

found = True
print(row1.to_frame().T)

if found==False and pd.isnull(row1['A'])==False:
df = pd.concat([df, row1.to_frame().T], axis=0)

df.reset_index(drop=True)

是否有更优雅、更高效的方式来实现我的目标?

注意:解决方案是

    A   B
0 DDD NaN

最佳答案

我相信需要isinboolean indexing :

默认情况下链新条件也省略 NaNs 行:

#changed df2 with no NaN in C column
df2 = pd.DataFrame({'C':[4, 5, 5, 'SSS','FFF','KKK','AAA'],
'D':[np.nan,np.nan,np.nan,1,np.nan,np.nan,np.nan]})
print (df2)
C D
0 4 NaN
1 5 NaN
2 5 NaN
3 SSS 1.0
4 FFF NaN
5 KKK NaN
6 AAA NaN

df = df1[~(df1['A'].isin(df2['C']) | (df1['A'].isnull()))]
print (df)
A B
5 DDD NaN
<小时/>

如果没有必要,请省略 C 列中不存在的 NaN:

df = df1[~df1['A'].isin(df2['C'])]
print (df)
A B
0 NaN NaN
1 NaN NaN
2 NaN ciao
5 DDD NaN
<小时/>

如果两列中都存在 NaN,则使用第二种解决方案:

(输入DataFrame来自问题)

df = df1[~df1['A'].isin(df2['C'])]
print (df)
A B
5 DDD NaN

关于python - 使用 Pandas 查找两个不同大小的数据帧之间的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793652/

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