python – 获取pandas中每个标识符的最新非NaN时间序列值
发布时间:2020-12-20 11:53:06 所属栏目:Python 来源:网络整理
导读:我坚持如何获取DataFrame的最新非NaN值以获取唯一标识符.所以我有一个Pandas DataFrame,其中包含一列ID,值和年份,类似于: | ID | Values | Year-------------------------0 | A | 4.0 | 2016 1 | B | NaN | 20162 | C | NaN | 20163 | D | 1.0 | 20164 | A
我坚持如何获取DataFrame的最新非NaN值以获取唯一标识符.所以我有一个Pandas DataFrame,其中包含一列ID,值和年份,类似于:
| ID | Values | Year ------------------------- 0 | A | 4.0 | 2016 1 | B | NaN | 2016 2 | C | NaN | 2016 3 | D | 1.0 | 2016 4 | A | 2.0 | 2015 5 | B | 2.0 | 2015 6 | C | 1.0 | 2015 7 | D | 3.0 | 2015 8 | A | 2.0 | 2014 9 | B | 2.0 | 2014 10| C | 3.0 | 2014 11| D | NaN | 2014 我正在试图找出如何获取每个ID的最新(最新)非NaN值的列表.所以这个案例的清单应该是: [4.0,2.0,1.0,1.0] 哪个是A,B,C和D的最新值(跳过任何NaN). df.pivot(index = 'Year',columns = 'ID',values = 'Values') 所以我得到: ID | A | B | C | D ---------------------- Year | | | | 2014 |2.0|2.0|3.0|NaN 2015 |2.0|2.0|1.0|3.0 2016 |4.0|NaN|Nan|1.0 在这里,我被困住了 – 为每个ID获取最新的非NaN值的最佳方法是什么?任何建议使用原始DataFrame或旋转的数据框将不胜感激! 解决方法
另一个groupby选项:
如果数据已按’Year’降序排序,如示例数据中所示: df.groupby('ID')['Values'].first() 如果数据尚未排序: df.sort_values(by='Year').groupby('ID')['Values'].last() 结果输出: ID A 4.0 B 2.0 C 1.0 D 1.0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |