【问题标题】:pandas count data in row with specific condition熊猫在特定条件下按行计数数据
【发布时间】:2021-10-12 03:32:36
【问题描述】:

我的 Dataframe 如下所示 - c2 是一个空列,并且所有行的初始总计为零

Data               c1   c2  c3   c4      Total  

ABCDEFG01AB        P         A    A       0            
ABCDEFG02AB        A         P    P       0
ABCDEFG03AB        p         A    P       0
ABCDEFG04AB        P         P    p       0  
ABCDEFG05AB        A         p    A       0 
ABCDEFG06AB        A         A    A       0

我想统计每一行的P个数,放到Total Like中

Data               c1   c2  c3   c4     Total  

ABCDEFG01AB        P         A    A       1            
ABCDEFG02AB        A         P    P       2
ABCDEFG03AB        p         A    P       2
ABCDEFG04AB        P         P    p       3  
ABCDEFG05AB        A         p    A       1 
ABCDEFG06AB        A         A    A       0

【问题讨论】:

标签: python pandas dataframe numpy


【解决方案1】:

我们可以sum 计算等于Ppaxis=1 的值:

df['Total'] = (df.eq('P') | df.eq('p')).sum(axis=1)

或者isin:

df['Total'] = df.isin(['P', 'p']).sum(axis=1)

如果需要,我们可以先选择特定的列:

filtered = df[['c1', 'c3', 'c4']]
df['Total'] = (filtered.eq('P') | filtered.eq('p')).sum(axis=1)

或者:

filtered = df[['c1', 'c3', 'c4']]
df['Total'] = filtered.isin(['P', 'p']).sum(axis=1)

所有选项产生df:

          Data c1 c2 c3 c4  Total
0  ABCDEFG01AB  P     A  A      1
1  ABCDEFG02AB  A     P  P      2
2  ABCDEFG03AB  p     A  P      2
3  ABCDEFG04AB  P     P  p      3
4  ABCDEFG05AB  A     p  A      1
5  ABCDEFG06AB  A     A  A      0

DataFrame 和导入:

import pandas as pd

df = pd.DataFrame({
    'Data': ['ABCDEFG01AB', 'ABCDEFG02AB', 'ABCDEFG03AB', 'ABCDEFG04AB',
             'ABCDEFG05AB', 'ABCDEFG06AB'],
    'c1': ['P', 'A', 'p', 'P', 'A', 'A'],
    'c2': ["", "", "", "", "", ""],
    'c3': ['A', 'P', 'A', 'P', 'p', 'A'], 'c4': ['A', 'P', 'P', 'p', 'A', 'A'],
    'Total': [0, 0, 0, 0, 0, 0]
})

【讨论】:

    猜你喜欢
    • 2018-06-20
    • 2014-01-26
    • 2022-08-10
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    相关资源
    最近更新 更多