Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多个dataframe列之间查找公共元素_Python_String_Pandas_Intersection_Series - Fatal编程技术网

Python 在多个dataframe列之间查找公共元素

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独有的 我正在使用下面

希望你能帮助我。我对蟒蛇和熊猫还不熟悉,所以请容忍我。我试图找到三个数据帧之间的共同点,我正在使用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[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']