我正在处理来自 noSQL 表的数据框,这意味着行的长度不同。 我需要检索每一行的最后一个非空值,将其移至新列“h”并将其从初始位置移除。
我的初始 DataFrame 是:
a b c d e f g
0 1635 01/01/2018 Null Null 95 120 80
1 7364 01/15/2018 178 182 99 Null Null
2 8947 01/20/2018 Null 190 92 Null Null
3 6473 01/24/2018 45 122 99 32 Null
我想得到这个结果:
a b c d e f g h
0 1635 01/01/2018 Null Null 95 120 Null 80
1 7364 01/15/2018 178 182 Null Null Null 99
2 8947 01/20/2018 Null 190 Null Null Null 92
3 6473 01/24/2018 45 122 99 Null Null 32
最佳答案
使用,DataFrame.ne
连同 DataFrame.cumsum
和 DataFrame.idxmax
沿 axis=1
获取包含最后一个非空值的列,最后使用 DataFrame.lookup
获取对应于 cols
的值:
cols = df.ne('Null').cumsum(axis=1).idxmax(axis=1)
df['h'] = df.lookup(df.index, cols)
结果:
# print(df)
a b c d e f g h
0 1635 01/01/2018 Null Null 95 120 80 80
1 7364 01/15/2018 178 182 99 Null Null 99
2 8947 01/20/2018 Null 190 92 Null Null 92
3 6473 01/24/2018 45 122 99 32 Null 32
关于python - 移动每行的最后一个非空值 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62572914/