从pandas数据框中删除重复的列索引

时间:2018-08-05 14:23:42

标签: python pandas dataframe

我正在寻找一种解决方案,以删除数据框中的重复列索引-我需要做的是逐行添加重复列中的值,然后仅将这些列中的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

4 个答案:

答案 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')]