如何将具有多个条件的熊猫数据帧列按行求和

恢复

我正在翻译熊猫的Excel公式。对具有指定条件的列进行计数并逐行累加。如果所选列中的某个单元格满足给定条件,则必须按行进行计数,然后添加满足条件的计数。

我有数据框:

df:

a    b     c
14   x1    2
17   x2    2
0    x,1   3
1    x1    1

Excel公式:

= COUNTIFS($U2,14,$X2,"x2",$W2,2)+COUNTIFS($U2,17,$X2,"x2",$W2,2)+COUNTIFS(U2,14,$X2,"x1",$W2,2)

熊猫公式:

df['counted'] = (df[(df['a']==14) & (df['b']=='x2') & (df['c']==2)].count(axis=1)) + (df[(df['a']==17) & (df['b']=='x2') & (df['c']==2)].count(axis=1)) + (df[(df['a']==14) & (df['b']=='x1') & (df['c']==2)].count(axis=1))

我从熊猫公式中得到以下结果:df:

a    b     c   counted
14   x1    2      NaN
17   x2    2      NaN
0    x,1   3      NaN
1    x1    1      NaN

预期结果如下所示。任何获得正确配方的帮助将不胜感激。

预期结果df:

a    b     c   counted
14   x1    2      0
17   x2    2      1
0    x,1   3      0
1    x1    1      0
耶斯列尔

我相信您需要将sum布尔值掩码转换为整数:

a = (df['a']==14) & (df['b']=='x2') & (df['c']==2)
b = (df['a']==17) & (df['b']=='x2') & (df['c']==2)
c = (df['a']==14) & (df['b']=='x1') & (df['c']==2)

避免重复以获得更好的性能也是可能的连锁条件:

m1 = df['a']==14
m2 = df['b']=='x2'
m3 = df['c']==2
m4 = df['a']==17
m5 = df['b']=='x1'

a = m1 & m2 & m3
b = m4 & m2 & m3
c = m1 & m5 & m3

df['counted'] = a.astype(int)+ b.astype(int) + c.astype(int)
print (df)
    a    b  c  counted
0  14   x1  2        1
1  17   x2  2        1
2   0  x,1  3        0
3   1   x1  1        0

或按位链掩码OR,然后转换为整数:

df['counted'] = (a | b | c).astype(int)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数据帧中,如何将具有列表的列(所有行的长度都相同)分解为同一行的不同列

如何将具有“结束”行和“开始”行的事件数据帧转换为按事件数据帧重新分组?

熊猫:np.where,在数据帧上具有多个条件

如何有效地对熊猫数据帧的行的值求和

如何将具有多个标题行的csv文件读取到熊猫中?

使用熊猫如何将一个数据帧按行拆分为多个大小为N的数据帧

如何将具有多种条件的函数应用于熊猫数据框?

熊猫:如何将行追加到按日期索引的现有数据框?

如何在熊猫中标记具有多个条件的列?

如何将两个不同数据帧的两列按行绑定?

如何将具有字典列的数据帧转换为多级数据帧

如何删除熊猫数据框中具有多个条件的行

熊猫数据帧捕获具有多个列的行,并用常量填充

在Google表格中,如何将多个列标题和数据转置为具有多个行标签和数据的单个列

如何将n列切换为ar行熊猫数据帧的行(最终数据帧中的n * r行)?

如何将具有多个定界符的文件转换为数据帧

如何将具有行和列标签的矩阵外观数据框转换为常规的熊猫数据框?

具有多个逻辑条件的按组求和,同时从求和R数据中忽略值。表

按列比较2个熊猫数据帧的行,并保持更大和求和

如何对按多个条件过滤的行求和

如何将熊猫数据帧的两列相乘(行乘法)并将结果存储在新列中?

如何将具有不同参数的多个 sklearn 算法应用于多个数据帧?

如何将行附加到 Pandas 数据帧,并将多个重叠单元格(具有相同索引)转换为单个值,而不是一个系列?

Pandas:将具有多行的 JSON 列转换为多个数据帧行

如果满足条件,如何将数据帧行拆分为多个数据帧行?

Python Pandas:如何按具有 if 条件的行求和?

如何将具有多个变量的函数应用于 Pandas 数据帧的一列(当无法更改 func 中的变量顺序时)

如何在熊猫中转置数据帧后将标题保留为列并具有索引?

如何将数据帧的字典更改为一个具有多列的数据帧