这几乎就是我的数据框的样子(由year
和countries
索引。)
ISO gini efw
year countries
1970 Argentina ARG NaN 5.67
1975 Argentina ARG NaN 3.13
1980 Argentina ARG 40.8 4.25
1985 Argentina ARG NaN 3.53
1990 Argentina ARG NaN 4.47
1970 Bolivia BOL NaN NaN
1975 Bolivia BOL NaN NaN
1980 Bolivia BOL NaN 4.08
1985 Bolivia BOL NaN 3.52
1990 Bolivia BOL 42.0 5.62
2010 Uruguay URY 44.5 7.33
2011 Uruguay URY 42.2 7.39
2012 Uruguay URY 39.9 7.34
2013 Uruguay URY 40.5 7.26
1970 Venezuela VEN NaN 7.18
1975 Venezuela VEN NaN 6.22
1980 Venezuela VEN NaN 6.72
1985 Venezuela VEN NaN 6.08
1990 Venezuela VEN NaN 5.55
1995 Venezuela VEN 47.8 4.35
2000 Venezuela VEN NaN 5.89
我想提出一个函数,该函数标识NaN
列中的第一个非gini
值,并返回与year
和efw
值对应的gini
列中的值。
例如,如果Nan
的第一个非Argentina
是40.8,我希望函数返回40.8,该值的年份(1980)和efw
的值也是1980年(4.25)。
理想情况下,新数据框将如下所示。每个国家都有。
ISO gini efw
year countries
1980 Argentina ARG 40.8 4.25
2016 Argentina ARG 43.60 3.13
最后一行对应于2016年,即有可用数据的最后一年。
答案 0 :(得分:1)
使用它,按条件获取,然后重置索引,然后对值进行排序,然后再次对数据框进行多索引:
print(df[df['gini'].notnull()].reset_index().sort_values('year').iloc[[0, -1]].set_index(['year','countries']))