使用特定条件对行中的数据进行计数

2024-07-02 09:06:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据帧如下所示,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的数量,然后将其加在一起,就像

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

Tags: 数据datatotal总计c2c1c3c4
1条回答
网友
1楼 · 发布于 2024-07-02 09:06:46

我们可以^{}axis=1上等于Pp的值进行计数:

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

或与^{}一起:

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

数据帧和导入:

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]
})

相关问题 更多 >