我的问题非常简单,但我还没有在stackexchange或google的任何地方找到答案。在python的pandas中,如何将具有两列的系列转换回数据帧?我的系列(agggenfreq)如下。 生成它的代码是:
agggenfreq=df2000[['freq','name','sex']].groupby(['name', 'sex']).sum()['freq']
其中df2000是包含以下列的数据框:
name sex freq year agg
0 Hannah F 23071 2000 162834
1 Hannah M 25 2000 162834
2 Hannah F 20706 2001 162834
3 Hannah M 22 2001 162834
4 Hannah F 18814 2002 162834
agggenfreq:
name sex
Aaden F 5
M 2980
Aaliah F 518
Aaliya F 583
Aaliyah F 40975
M 49
Aamir M 607
Aaniyah F 741
Aanya F 954
Aaralyn F 581
Aarav M 1374
Aaron F 365
M 94269
Aarush M 763
Aarya F 375
M 190
Aaryan M 560
Aaryn F 293
M 272
Aayush M 632
Abagail F 3051
Abbey F 5230
M 6
有没有一种好方法可以将其转换回数据帧?如果在这里的系列中只有一列(我认为技术上不是正确的术语,但你应该知道我的意思),我会这样做:
data = pd.DataFrame({' agg':aggfreq,' name':aggfreq.index})
如何使用两列进行此操作? 提前致谢。 编辑:此外,如果有人知道一个更好的方法来在线完成上述(第一)功能,而不必制作一个系列,我很想知道:)
答案 0 :(得分:4)
这是一个带有MultiIndex的系列。您可以通过执行agggenfreq.reset_index()
来获取DataFrame。
答案 1 :(得分:0)
@BrenBarn的回答是正确的。如果您想首先避免创建MultiIndex,则可以运行
agggenfreq = df2000.groupby(['name', 'sex'], as_index=False).freq.sum()
它为您提供了一个DataFrame。
as_index=False
标志将分组变量扩展为列。我也简化了命令。