python - 返回列中的第一个数值

标签 python pandas function dataframe

这几乎就是我的数据框的样子(按年份国家索引。)

                   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

我想提出一个函数来识别gini列中的第一个非NaN值,并返回年份efw 值对应于 gini 列中的值。

例如,如果 Argentina 的第一个非 Nan 是 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 年,即有可用数据的最后一年。

最佳答案

使用它,通过条件获取,然后重置索引,然后对值进行排序,然后再次对数据帧进行多重索引:

print(df[df['gini'].notnull()].reset_index().sort_values('year').iloc[[0, -1]].set_index(['year','countries']))

关于python - 返回列中的第一个数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331096/

相关文章:

python - 创建时显示 ModelForm 中的字段,但更新时隐藏它

PHP/MySQL - 调用成员函数 query()

c - 两个 C 函数试图返回字符串中的第一个单词

python - ZeroMQ 无法在两个 Docker 容器之间进行通信

Python:系统找不到使用subprocess.Popen指定的文件

python - 有没有人能够使用 python 的 xlwt 写出 UTF-8 字符?

python - 使用 pandas 标准化器展平 Json 文件数据

python - 如何在循环中使用groupby()函数?

python - 解析来自 MapQuest 反向地理编码数据的信息

java - 整数不像真正的对象?