gpt4 book ai didi

python - 当数据框 B 中的列值不相似时,从数据框 A 中删除行

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

我的目标

我正在尝试创建一个新的数据框,该数据框是通过比较不同数据框的列而形成的。

更具体地说,当 ColumnA 中的列值与 ColumnB 中不相似/不存在时, 整行将被忽略且不包含在内在new_df

数据框

>>> df

ColumnA Stats
0 Cake 872
1 Cheese Cake 912
2 Egg 62
3 Raspb Jam 091
4 Bacon 123
5 Bread 425

>>> df1

ColumnB
0 Cake
1 Cheese Cake
3 Raspberry Jam
4 Bacon

我的尝试

由于我不确定如何实现这一目标,因此我已尽力生成以下内容,尽管我知道它可能不会达到我的预期输出:

new_df = df[df['ColumnA'].str.strip() in df1['ColumnB'].str.split()]

错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

预期输出

如您所见,对于 df1 中不存在的列值,这些行将从 df 中删除。在本例中,BreadEgg 都不存在,因此 new_df 不包含它们的

>>> new_df
ColumnA Stats
0 Cake 872
1 Cheese Cake 912
3 Raspberry Jam 091
4 Bacon 123
<小时/>

编辑:

Raspb Jam 也保留在新的 DF 中,因为它在非常基础的层面上与 Raspberry Jam 类似

最佳答案

您可以使用映射函数来提供显式查找。

df = DataFrame( {'ColumnA' : ['Cake' ,'Cheese Cake','Egg' , 'Raspb Jam' ,'Bacon' ,'Bread'],'Value' : [872,912,62,91,123, 425]})
df1 = DataFrame(['Cake' ,'Cheese Cake','Raspberry Jam','Bacon'],columns=['ColumnB'])
value_map = {'Raspberry Jam' : 'Raspb Jam' }
df1.ColumnB = df1.ColumnB.map(lambda x : value_map.get(x,x))
df1.rename(columns={'ColumnB' : 'ColumnA'},inplace=True)
df.merge(df1)
ColumnA Value
0 Cake 872
1 Cheese Cake 912
2 Raspb Jam 91
3 Bacon 123

或者,使用 left_on 和 right_on 参数指定要合并的列名称。

df.merge(df1,how='inner',left_on='ColumnA',right_on='ColumnB')[['ColumnA','Value']]

关于python - 当数据框 B 中的列值不相似时,从数据框 A 中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419371/

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