我有一个数据框,其列名以一组前缀列表开头。我想获取数据框中按以相同前缀开头的列分组的值的总和。
df = pd.DataFrame([[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]],
columns=['abc', 'abd', 'wxy', 'wxz'])
prefixes = ['ab','wx']
df
abc abd wxy wxz
0 1 2 3 4
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
我能弄清楚如何做到这一点的唯一方法是循环遍历前缀列表,从数据框中获取以该字符串开头的列,然后对结果求和。
results = []
for p in prefixes:
results.append([p, df.loc[:, df.columns.str.startswith(p)].values.sum()])
results = pd.DataFrame(results,)
results.set_index(keys=[0], drop=True).T
ab wx
1 12 28
我希望有一种更优雅的方法来做到这一点,也许使用 groupby() ,但我无法弄清楚。