我有一个数据帧,它在索引中有列名,旁边的列中有值,如下所示:
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
将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
如果它们作为您的示例是对称的,则可以只使用reshape
pd.DataFrame(df.values.reshape([-1,3]), columns=df.index[:3])
col1 col2 col3
0 a b c
1 d e f
您可以先填充字典
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