我有一个数据集,其中某些列具有相同的列名。我想合并具有相同列名的列,以便将值附加为行。而且,对于没有相同名称的列,将在行后附加0。
我曾尝试过融化,但似乎不适用于我需要的格式。
样本数据:
print (df)
Date Column_A Column_A Column_B
0 1/2/2018 3 2 3
1 2/2/2018 4 7 1
2 3/2/2018 2 2 6
3 4/2/2018 1 1 4
预期输出:
Date Column_A Column_B
0 1/2/2018 3 3.0
1 2/2/2018 4 1.0
2 3/2/2018 2 6.0
3 4/2/2018 1 4.0
4 1/2/2018 2 0.0
5 2/2/2018 7 0.0
6 3/2/2018 2 0.0
7 4/2/2018 1 0.0
答案 0 :(得分:1)
在GroupBy.cumcount
的列中创建MultiIndex
,然后通过DataFrame.stack
重塑形状,通过DataFrame.sort_index
按MultiIndex的第二级进行排序,最后通过转换第一级除去第二级将Date
列加倍DataFrame.reset_index
:
df = df.set_index('Date')
s = df.columns.to_series()
df.columns = [df.columns, s.groupby(s).cumcount()]
df = df.stack().sort_index(level=1).fillna(0).reset_index(level=1, drop=True).reset_index()
print (df)
Date Column_A Column_B
0 1/2/2018 3 3.0
1 2/2/2018 4 1.0
2 3/2/2018 2 6.0
3 4/2/2018 1 4.0
4 1/2/2018 2 0.0
5 2/2/2018 7 0.0
6 3/2/2018 2 0.0
7 4/2/2018 1 0.0