如何重塑 pandas DataFrame?

How to reshape a pandas DataFrame?

我想重塑一个 DataFrame,但我不确定最好的方法是什么:

原始数据框是:

df1 = pd.DataFrame({'A':['a','a','b','b'],'B':[1,2,2,3]})

我想将其重塑为:

df2 = pd.DataFrame({'a':[1,2],'b':[2,3]})

有人可以向我解释如何做到最好吗?

您可以在稍微重组输入后使用 pivot

(df1.assign(index=df1.groupby('A').cumcount())
    .pivot(index='index', columns='A', values='B')
    .rename_axis(None).rename_axis(None, axis=1)
)

unstack:

(df1.set_index([df1.groupby('A').cumcount(), 'A'])
    .unstack().droplevel(0, axis=1)
    .rename_axis(None, axis=1)
)

输出:

    a  b   
0   1  2
1   2  3