python - 移动每行的最后一个非空值 - Pandas

标签 python pandas dataframe

我正在处理来自 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.cumsumDataFrame.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/

相关文章:

python - 数据框未使用值进行更新;输出是警告 'copy of a slide'

多个数据帧的 Python 3D 绘图

python - 在 matplotlib 中绘制 3D 凸封闭区域

python - "from __future__ import annotations"在 VSCode 中产生 "annotations is not defined"

python - Pandas:用 NaN 替换数据帧所有数值列中的异常值 (3 sigma)

python - 处理巨大的 pandas 数据框

python - Pandas groupby().get_group().size 未返回正确的大小?

python - 在 groupby 内聚合

python - Fiona 在 Windows 上使用 pip 安装错误

python - 使用 feedparser 从博客中获取每个独特的项目。检查 for 循环中的列表成员身份不起作用