转置后如何转置和合并相同的列名?



我有一个数据帧,它在索引中有列名,旁边的列中有值,如下所示:

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

最新更新