Pandas按行条件计算值

时间:2017-03-19 12:04:56

标签: python pandas dataframe

我有一张桌子:

x A B C D
A 1 
B 1 1 1 1  
C 1   1
D

我想知道每一行都是1。 预期结果:{ A: 1, B: 4, C: 2, D: 0 }

我尝试了一些df[A][df[A]==1],但它给了我相同的结果,但是按列。 我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

数据帧:

In [121]: df.eq(1).sum(axis=1).to_dict()
Out[121]: {'A': 1, 'B': 4, 'C': 2, 'D': 0}

解决方案:

In [123]: df.eq(1)
Out[123]:
       A      B      C      D
A   True  False  False  False
B   True   True   True   True
C   True  False   True  False
D  False  False  False  False

In [124]: df.eq(1).sum(axis=1)
Out[124]:
A    1
B    4
C    2
D    0
dtype: int64

说明:

NSApplicationMain

答案 1 :(得分:0)

如果数据框中的值是数字(1或0),则可以按行使用和:

df = pd.DataFrame([[1,0,0,0],[1,1,1,1],[1,0,1,0],[0,0,0,0]],\
    index=['A','B','C','D'],\
    columns=['A','B','C','D'])

print(df.sum(axis = 1))

A    1
B    4
C    2
D    0
dtype: int64

如果它们是字符串('1'或''),您可以使用它们,只有 sum 运算符连接它们,然后将它们映射到它们的长度。

df = pd.DataFrame([['1','','',''],['1','1','1','1'],['1','','1',''],['','','','']],\
    index=['A','B','C','D'],\
    columns=['A','B','C','D'])

print(df.sum(axis = 1).str.len())

A    1
B    4
C    2
D    0
dtype: int64