我正在寻找一种解决方案,以删除数据框中的重复列索引-我需要做的是逐行添加重复列中的值,然后仅将这些列中的1个保留为总值
df = pd.DataFrame(np.array([[0,0,0,1,0,0,0], [0,1,0,0,0,0,0],
[0,0,0,0,0,0,1]]), columns=[1,1,2,2,2,3,3], index=[1,2,3])
1 1 2 2 2 3 3
1 0 0 0 1 0 0 0
2 0 1 0 0 0 0 0
3 0 0 0 0 0 0 1
应该成为
1 2 3
1 0 1 0
2 1 0 0
3 0 0 1
答案 0 :(得分:2)
按列简单分组:
df.groupby(df.columns, 1).sum()
1 2 3
1 0 1 0
2 1 0 0
3 0 0 1
或@ user2285236指出
df.groupby(axis=1, level=0).sum()
答案 1 :(得分:2)
您不需要groupby
在这里
df.sum(level=0,axis=1)
Out[358]:
1 2 3
1 0 1 0
2 1 0 0
3 0 0 1
答案 2 :(得分:1)
由于缺少数据,因此很难解决您的问题:
import pandas as pd
df = pd.DataFrame(np.array([[0,0,0,1,0,0,0], [0,1,0,0,0,0,0],
[0,0,0,0,0,0,1]]))
df.columns = [1,1,2,2,2,3,3]
df1 = df.groupby(lambda x:x, axis=1).sum()
df1.index = range(1,4)
df1
输出您发布的所需数据框。以下df1.index = range(1,4)
只是为了重新索引行,因为在您的示例中它们以1
开头。
答案 3 :(得分:0)
您尝试过吗?
df = df.loc[:,~df.columns.duplicated(keep='last')]