Bru*_*llo 2 python dataframe pandas
我有以下数据框:
df = pd.DataFrame({'id': [1,1,1,2,3,2], 'year': ['2020', '2014', '2002', '2020', '2016', '2014'], 'e': [True, False, True, True, False, True], 'val': [100,200,300, 200, 300, 200]})
id year e val
0 1 2020 True 100
1 1 2014 False 200
2 1 2002 True 300
3 2 2020 True 200
4 3 2016 False 300
5 2 2014 True 200
Run Code Online (Sandbox Code Playgroud)
我想要以下信息:
df.groupby('id').apply(lambda x: x[x['e']]['year'].min())
id
1 2002
2 2014
3 NaN
Run Code Online (Sandbox Code Playgroud)
和
df.groupby('id').val.sum()
id
1 600
2 400
3 300
Run Code Online (Sandbox Code Playgroud)
我的问题是是否可以将这两个返回到同一组中?还是我必须分开做然后合并?
我们可以这样做apply
s = df.groupby('id').apply(lambda x: pd.Series([x.loc[x['e'], 'year'].min(),x['val'].sum()],index=['myear','sumy']))
Out[321]:
myear sumy
id
1 2002 600.0
2 2014 400.0
3 NaN 300.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |