Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas按查找列的最小值分组(如果不';不存在返回NaN_Python_Pandas_Dataframe - Fatal编程技术网

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