python - 按字符串名称 Pandas 求和

标签 python pandas dataframe sum

我正在使用这样的数据框,但更大且区域更多。我正在尝试按名称对行的 value 求和。 R 或 C 区域的总和进入 total 列,而 M 区域的总和进入 total1

输入:

total, total1 是期望的输出。

ID  Zone1   CHC1    Value1  Zone2     CHC2  Value2  Zone3   CHC3    Value3  total   total1
 1  R5B     100      10       C2        0     20      R10A   2       5        35       0
 1  C2       95      20      M2-6       5      6      R5B    7       3        23       6       
 3  C2       40      4        C4       60      6       0     6       0        10       0
 3  C1       100     8         0        0      0       0    100      0        8        0
 5  M1-5     10      6       M2-6      86     15       0     0       0        0        21

最佳答案

您可以使用 filter对于 ZonesValues 的数据帧:

z = df.filter(like='Zone')
v = df.filter(like='Value')

然后通过 contains 创建 boolean DataFrame使用 apply 如果要检查子字符串:

m1 = z.apply(lambda x: x.str.contains('R|C'))
m2 = z.apply(lambda x: x.str.contains('M'))

#for check strings
#m1 = z == 'R2'
#m2 = z.isin(['C1', 'C4'])

最后过滤条件 where vsum 每行:

df['t'] = v.where(m1.values).sum(axis=1).astype(int)
df['t1'] = v.where(m2.values).sum(axis=1).astype(int)

print (df)
   ID Zone1  CHC1  Value1 Zone2  CHC2  Value2 Zone3  CHC3  Value3   t  t1
0   1   R5B   100      10    C2     0      20  R10A     2       5  35   0
1   1    C2    95      20  M2-6     5       6   R5B     7       3  23   6
2   3    C2    40       4    C4    60       6     0     6       0  10   0
3   3    C1   100       8     0     0       0     0   100       0   8   0
4   5  M1-5    10       6  M2-6    86      15     0     0       0   0  21

关于python - 按字符串名称 Pandas 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51161506/

相关文章:

python - Pandas 中的成对回归

python - 如何计算两个列表的所有交错?

python - Dask DataFrame Groupby : Most frequent value of column in aggregate

python - os.rename() 在我的 python 脚本中不起作用

python - 过滤 Dataframe - 列和行

python - Pandas 中复制与查看的终极 Elixir ?

python - pandas.groupby 对象上尊重时间的移动平均值

python - 按列计算两个 DataFrame 的相关性

python - 如何修改 pandas DataFrame 中的单元格?

python - 如何将由空格分隔的文本文件读取到 DataFrame 中?