有没有一种方法可以使用python将具有相同列名的列的值追加?

时间:2019-06-07 06:26:23

标签: python pandas dataframe timestamp data-processing

我有一个数据集,其中某些列具有相同的列名。我想合并具有相同列名的列,以便将值附加为行。而且,对于没有相同名称的列,将在行后附加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

1 个答案:

答案 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