[英]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.