有没有办法使用 python 附加具有相同列名的列的值?
Is there a way to append values of the column with same column name using python?
我有一个数据集,其中一些列具有相同的列名。我想合并具有相同列名的列,以便将值附加为行。并且,对于没有具有相同列名的列的列,在行中附加 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
想法是在 GroupBy.cumcount
, then reshape by DataFrame.stack
, sorting by second level of MultiIndex by DataFrame.sort_index
and last remove second level with convert first level to column Date
by double DataFrame.reset_index
的列中创建 MultiIndex
:
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
我有一个数据集,其中一些列具有相同的列名。我想合并具有相同列名的列,以便将值附加为行。并且,对于没有具有相同列名的列的列,在行中附加 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
想法是在 GroupBy.cumcount
, then reshape by DataFrame.stack
, sorting by second level of MultiIndex by DataFrame.sort_index
and last remove second level with convert first level to column Date
by double DataFrame.reset_index
的列中创建 MultiIndex
:
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