多索引系列到 pandas 数据框

Multi index series into pandas dataframe

我有一个包含两个索引的 pandas 系列:

df_agg=df.groupby(['yearID','teamID']).sum()['Salary']
df_agg.head()

yearID  teamID
1985    ATL       14807000
        BAL       11560712
        BOS       10897560
        CAL       14427894
        CHA        9846178

我想将 int 转换成 pandas 数据框,例如

yearID     teamID    Salary
1985        ATL       14807000
1985        BAL       11560712
1985        BOS       10897560
1985        CAL       14427894
1985        CHA        9846178

我用起来很累:

df_new=df_agg.reset_index(inplace=True)

但我收到以下错误:


TypeError Traceback(最后一次调用) 在 () ----> 1 df_new=df_agg.reset_index(inplace=True)

C:\Users\ameimand\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\series.py in reset_index(self, level, drop, name, inplace) 966

    index=new_index).__finalize__(self)
    967         elif inplace:
--> 968             raise TypeError('Cannot reset_index inplace on a Series '
    969                             'to create a DataFrame')
    970         else:

TypeError: Cannot reset_index inplace on a Series to create a DataFrame

我认为有 2 个不错的解决方案参数 as_index=False:

df_new = df.groupby(['yearID','teamID'], as_index=False)['Salary'].sum()

或者 reset_index 没有 inplace=True:

df_new = df.groupby(['yearID','teamID'])['Salary'].sum().reset_index()

通知:

最好在 [] 中的 groupby 之后指定聚合列,例如 ['Salary']:

df.groupby(['yearID','teamID'], as_index=False)['Salary']

如:

df.groupby(['yearID','teamID']).sum()['Salary']

因为这聚合了所有列然后 select 仅 Salary.