如何重塑 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
我想重塑一个 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