gpt4 book ai didi

python - 如何确保在 pd.merge 期间不会丢失任何行

转载 作者:行者123 更新时间:2023-12-01 02:24:06 24 4
gpt4 key购买 nike

df1: df2:

  Column1  Column2  Column3           ColumnA  ColumnB ColumnC
0 a x x 0 c y y
1 c x x 1 e z z
2 e x x 2 a s s
3 d x x 3 d f f
4 h x x
5 k x x

df1.merge(df2,left_on='Column1', right_on='ColumnA')

如何知道带有 h 和 k 的行将会丢失?

我知道 pd.merge 函数上的 how='left' 选项,但如何识别不匹配的值并同时执行内部联接?

我需要先执行how='left',然后打印columnA 为NaN 的column1,然后删除这些吗?

编辑

用例如下:客户提供 2 个文件,表示文件 1 中的第 1 列始终与文件 2 的 A 列匹配。

然后,我们需要一种安全的方法来断言,在违反此规定时打印错误消息

最佳答案

如果需要查找所有不同的值,请使用 isinboolean indexing :

a = df1.loc[~df1['Column1'].isin(df2['ColumnA']), 'Column1']
print (a)
4 h
5 k
Name: Column1, dtype: object

为了检查,可以在反掩码中计数 True 并与 0 进行比较:

a = (~df1['Column1'].isin(df2['ColumnA'])).sum() == 0
print (a)
False
<小时/>

要获得更快的解决方案,请使用 numpynumpy.setdiff1d :

a = np.setdiff1d(df1['Column1'], df2['ColumnA'])
print (a)
['h' 'k']

a = len(np.setdiff1d(df1['Column1'], df2['ColumnA'])) == 0
print (a)
False

关于python - 如何确保在 pd.merge 期间不会丢失任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575489/

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