熊猫分组通过查找最小列(如果不存在)返回 NaN



假设我有以下数据帧:

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为True,如果该id的e中没有任何True,则返回NaN。最终结果是:

id  year
1   2002
2   2014
3   NaN

groupbyreindex返回之前尝试过滤器

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

或转换为Categorical

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

相关内容

最新更新