我有一个数据框,我们可以通过
代理df = pd.DataFrame({'a':[1,0,0], 'b':[0,1,0], 'c':[1,0,0], 'd':[2,3,4]})
和类别系列
category = pd.Series(['A', 'B', 'B', 'A'], ['a', 'b', 'c', 'd'])
我希望将df的列的总和分为A' A' B' B'。也许是这样的:
result = df.groupby(??, axis=1).sum()
返回
result = pd.DataFrame({'A':[3,3,4], 'B':[1,1,0]})
答案 0 :(得分:4)
在列上使用groupby
+ sum
(此处axis=1
非常重要):
df.groupby(df.columns.map(category.get), axis=1).sum()
A B
0 3 1
1 3 1
2 4 0
答案 1 :(得分:3)
在reindex
之后,您可以将类别分配给df
df=df.reindex(columns=category.index)
df.columns=category
df.groupby(df.columns.values,axis=1).sum()
Out[1255]:
A B
0 3 1
1 3 1
2 4 0
或pd.Series.get
df.groupby(category.get(df.columns),axis=1).sum()
Out[1262]:
A B
0 3 1
1 3 1
2 4 0
答案 2 :(得分:0)
这是我对具有相似列名的数据框进行分组的方法
data_df:
1 1 2 1
q r f t
代码:
df_grouped = data_df.groupby(data_df.columns, axis=1).agg(lambda x: ' '.join(x.values))
df_grouped:
1 2
q r t f