我有一个 pandas 数据框,如下所示:
我有几个同名的列。我想将这些列合并为一列并对其中的值求和。例如,在第一行中,foot 作为列名称出现了 5 次。我想将这 5 个值与值之和 (1) 组合成一英尺的列。
对于上面的数据框,我希望将其合并为:
finger foot forearm glute groin
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
本质上,具有 Finger 的 5 列被合并为一列,具有 header Finger,并且该行中所有项目的总和为 0。类似地,具有 foot 的 6 列被合并为一列,称为 foot,并取总和该特定行中所有 6 列的总和为 1。我想对所有列执行此操作,并获得具有相同列名的每个项目的总和。 我怎么能这样做呢?
最佳答案
这是一个例子
df=pd.DataFrame({'col1':[1,2],'col2':[2,3]})
df=pd.concat([df,df],axis=1)
print(df)
col1 col2 col1 col2
0 1 2 1 2
1 2 3 2 3
new_df=df.groupby(level=0,axis=1).sum()
print(new_df)
col1 col2
0 2 4
1 4 6
axis = 1
告诉 pandas 我们要按列进行分组,level = 0
告诉它我们要根据层级 0 来划分组列(因为 axis=1),在这种情况下,列中只有一层,因为没有 MultiIndex在列中,另一种方法是:
new_df = df.groupby(df.columns, axis=1).sum()
col1 col2
0 2 4
1 4 6
关于python - 如何添加具有相同名称的 pandas 列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58809851/