繁体   English   中英

获取pandas DataFrame中行及其列的最后一个非空值

[英]Get last non-null value of a row and its column in pandas DataFrame

我想获取此 DataFrame 中 C 行的最后一个非空值(最右边)。 有了这个,我也想得到它的年份(列名)。

这是我的数据帧:

df = pd.DataFrame(np.random.randint(0,100,size=(4, 5)),
                  columns=['2016', '2017', '2018', '2019', '2020'],
                  index=['A', 'B', 'C', 'D'])
df.iloc[2, 2:5] = np.NaN
print(df)
    2016    2017    2018    2019    2020
A   41      69      63.0    85.0    16.0
B   12      99      88.0    87.0    13.0
C   80      15      NaN     NaN     NaN
D   42      27      3.0     76.0    6.0

结果应该类似于{'year' : 2017, 'value' : 15} 实现该结果的最佳方法是什么?

这样的事情应该解决它

In [1]: import pandas as pd 
   ...: import numpy as np 
   ...: df = pd.DataFrame(np.random.randint(0,100,size=(4, 5)), 
   ...:                   columns=['2016', '2017', '2018', '2019', '2020'], 
   ...:                   index=['A', 'B', 'C', 'D']) 
   ...: df.iloc[2, 2:5] = np.NaN 
   ...: print(df)                                                                                                                                                                                     
   2016  2017  2018  2019  2020
A    13    78   9.0  13.0  98.0
B    35     3  32.0   6.0  42.0
C    26    24   NaN   NaN   NaN
D    77    91  96.0  60.0  94.0

In [2]: value = int(df.loc['C'][~df.loc['C'].isna()][-1])                                                                                                                                             

In [3]: year = df.loc['C'][df.loc['C'] == value].index.values[0]                                                                                                                                      

In [4]: result = {'year': year, 'value': value}                                                                                                                                                       

In [5]: result                                                                                                                                                                                        
Out[5]: {'year': '2017', 'value': 24}

您可以逐个分解上述表达式,以更好地了解每个功能如何在此处一起使用以产生所需的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM