多索引系列到 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
.
我有一个包含两个索引的 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
.