Python 在多个dataframe列之间查找公共元素
希望你能帮助我。我对蟒蛇和熊猫还不熟悉,所以请容忍我。我试图找到三个数据帧之间的共同点,我正在使用Jupiter笔记本 举个例子:Python 在多个dataframe列之间查找公共元素,python,string,pandas,intersection,series,Python,String,Pandas,Intersection,Series,希望你能帮助我。我对蟒蛇和熊猫还不熟悉,所以请容忍我。我试图找到三个数据帧之间的共同点,我正在使用Jupiter笔记本 举个例子: df1= A dog cat cow duck snake df2= A pig snail bird dog df3= A eagle dog snail monkey 所有数据帧中只有一列是A。我想查找 所有列中的常用词 这些词对于它们自己的专栏来说是唯一的,而不是共同的 例如: 鸭是df1独有的,蜗牛是df2独有的,猴子是df3独有的 我正在使用下面
df1=
A
dog
cat
cow
duck
snake
df2=
A
pig
snail
bird
dog
df3=
A
eagle
dog
snail
monkey
所有数据帧中只有一列是A。我想查找
df1[df1['A'].isin(df2['A']) & (df2['A']) & (df3['A'])]
请告诉我哪里出了问题。干杯您当前方法的问题是您需要链接多个
isin
呼叫。更糟糕的是,您需要跟踪哪个数据帧是最大的,然后对该数据帧调用isin
。否则,它就不起作用了
为了简化操作,您可以使用np.intersect1d
:
>>> np.intersect1d(df3.A, np.intersect1d(df1.A, df2.A))
array(['dog'], dtype=object)
使用
functools.reduce
+intersect1d
的类似方法:
最简单的方法是使用
set
intersection
list(set(df1.A) & set(df2.A) & set(df3.A))
['dog']
但是,如果您有一长串这些东西,我会使用
functools
中的reduce
。同样的技术也可以用于@cᴏʟᴅsᴘᴇᴇᴅ's使用np.intersect1d
from functools import reduce
list(reduce(set.intersection, map(set, [df1.A, df2.A, df3.A])))
['dog']
reduce(np.1d[df1.A,df2.A,df3.A])
hi coldspeed,它可以工作!!谢谢你。我想问你我在上面问过的同样的问题。如何获得不带引号或逗号的输出?非常感谢你的时间和帮助。最后,我终于暂时想出了办法。刚刚将列表转换成数据框,看起来很整洁。感谢您的帮助。如果数据帧具有不同的长度值,这仍然有效吗?您好,非常感谢您的inout。是的,但当我得到输出时,它们都在单引号内,用逗号分隔。是否可以将它们作为一个干净的列表检索。非常感谢您的时间和帮助。
from functools import reduce
list(reduce(set.intersection, map(set, [df1.A, df2.A, df3.A])))
['dog']