Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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_Pandas - Fatal编程技术网

Python 使用dataframe检查特定列是否具有相同的值

Python 使用dataframe检查特定列是否具有相同的值,python,pandas,Python,Pandas,是否有一种方法可以检查和求和相同值的特定数据帧列 例如,在下面的数据帧中 column name 1, 2, 3, 4, 5 ------------- a, g, h, t, j b, a, o, a, g c, j, w, e, q d, b, d, q, i 比较第1列和第2列时,相同的值之和为2(a和b) 谢谢您可以使用isin和sum来实现这一点: In [96]

是否有一种方法可以检查和求和相同值的特定数据帧列

例如,在下面的数据帧中

column name 1, 2, 3, 4, 5
            -------------
            a, g, h, t, j 
            b, a, o, a, g
            c, j, w, e, q
            d, b, d, q, i
比较第1列和第2列时,相同的值之和为2(a和b)


谢谢

您可以使用
isin
sum
来实现这一点:

In [96]:
import pandas as pd
import io
t="""1, 2, 3, 4, 5
a, g, h, t, j 
b, a, o, a, g
c, j, w, e, q
d, b, d, q, i"""
df = pd.read_csv(io.StringIO(t), sep=',\s+')
df

Out[96]:
   1  2  3  4  5
0  a  g  h  t  j
1  b  a  o  a  g
2  c  j  w  e  q
3  d  b  d  q  i

In [100]:    
df['1'].isin(df['2']).sum()

Out[100]:
2
isin
将生成一个布尔级数,对布尔级数调用sum将
True
False
分别转换为
1
0

In [101]:
df['1'].isin(df['2'])

Out[101]:
0     True
1     True
2    False
3    False
Name: 1, dtype: bool
编辑

要检查和计算所有感兴趣列中存在的值的数量,请注意,对于数据集,所有列中都不存在值:

In [123]:
df.ix[:, :'4'].apply(lambda x: x.isin(df['1'])).all(axis=1).sum()

Out[123]:
0
分解上述内容将显示每个步骤所做的工作:

In [124]:    
df.ix[:, :'4'].apply(lambda x: x.isin(df['1']))

Out[124]:
      1      2      3      4
0  True  False  False  False
1  True   True  False   True
2  True  False  False  False
3  True   True   True  False

In [125]:    
df.ix[:, :'4'].apply(lambda x: x.isin(df['1'])).all(axis=1)

Out[125]:
0    False
1    False
2    False
3    False
dtype: bool

谢谢,太好了,它很管用!。是否也可以比较4列的相同值?抱歉,您的意思是将列“1”与所有其他列进行比较?抱歉,不,我的意思是比较列1、2、3、4,并返回所有4列中出现的所有值的总和(谢谢)对于示例数据集,您的前4列中没有值,您只是在寻找所有4列中的值吗?谢谢,数据集将更新,并且很可能所有4列中都有相同的值。因此,是的,我正在寻找将出现在所有4列中的值