Pandas / Python将具有两列的系列转换为数据帧

时间:2014-05-24 20:58:44

标签: python pandas series

我的问题非常简单,但我还没有在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})

如何使用两列进行此操作? 提前致谢。 编辑:此外,如果有人知道一个更好的方法来在线完成上述(第一)功能,而不必制作一个系列,我很想知道:)

2 个答案:

答案 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标志将分组变量扩展为列。我也简化了命令。