Python Pandas按查找列的最小值分组(如果不';不存在返回NaN
假设我有以下数据帧:Python Pandas按查找列的最小值分组(如果不';不存在返回NaN,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有以下数据帧: import pandas as pd df = pd.DataFrame({'id': [1,1,1,2,3,2], 'year': ['2020', '2014', '2002', '2020', '2016', '2014'], 'e': [True, False, True, True, False, True]}) df.info() id year e 1 2020 True 1 2014 False 1 2002 Tr
import pandas as pd
df = pd.DataFrame({'id': [1,1,1,2,3,2], 'year': ['2020', '2014', '2002', '2020', '2016', '2014'], 'e': [True, False, True, True, False, True]})
df.info()
id year e
1 2020 True
1 2014 False
1 2002 True
2 2020 True
3 2016 False
2 2014 True
我想找到每个id的最小年份,其中e为真,如果e中没有任何该id为真的,返回NaN。最终结果将是:
id year
1 2002
2 2014
3 NaN
在
groupby
和reindex
返回之前尝试筛选
s = df.loc[df.e].groupby('id').year.min().reindex(df.id.unique()).reset_index()
s
Out[307]:
id year
0 1 2002
1 2 2014
2 3 NaN
或转换为分类的
df['id'] = pd.Categorical(df['id'])
df.loc[df.e].groupby('id').year.min()
Out[309]:
id
1 2002
2 2014
3 None
Name: year, dtype: object