我有一个数据框,它的索引中有列名,而其旁边的列中有值,像这样:
column
col1 a
col2 b
col3 c
col1 d
col2 e
col3 f
如何像这样将索引翻转并合并到列中?
col1 col2 col3
a b c
d e f
我尝试过:
new_df = pd.DataFrame(df).transpose()
new_df看起来像这样:
col1 col2 col3 col1 col2 col3
a b c d e f
答案 0 :(得分:4)
将DataFrame.set_index
与GroupBy.cumcount
的计数器和append=True
的参数MultiIndex
一起使用,然后由Series.unstack
的第一级重塑:
df = df.set_index(df.groupby(level=0).cumcount(), append=True)['column'].unstack(0)
print (df)
col1 col2 col3
0 a b c
1 d e f
答案 1 :(得分:2)
如果它们是对称的,例如,只能使用reshape
pd.DataFrame(df.values.reshape([-1,3]), columns=df.index[:3])
col1 col2 col3
0 a b c
1 d e f
答案 2 :(得分:1)
您可以先填充字典
d = {}
for k, v in df.column.items():
d.setdefault(k, []).append(v)
pd.DataFrame(d)
col1 col2 col3
0 a b c
1 d e f