gpt4 book ai didi

Python - 创建一个新列,该列从右侧取第一列不是 Pandas 中的 NaN

转载 作者:行者123 更新时间:2023-12-03 21:41:56 24 4
gpt4 key购买 nike

我有一个名为“a”、“b”、“c”、“d”、“e”的 DataFrame

#Input
import pandas as pd
import numpy as np

list_of_dicts = [
{'a' : np.nan, 'b' : 4, 'c' : np.nan, 'd' : 5, 'e' : 2},
{'a' : 1, 'b' : np.nan, 'c' : np.nan, 'd' : np.nan, 'e' : np.nan},
{'a' : 7, 'b' : 5, 'c' : 0, 'd' : 5, 'e' : 3 },
{'a' : np.nan, 'b' : 3, 'c' : np.nan, 'd' : 5, 'e' : np.nan },
{'a' : np.nan, 'b' : np.nan, 'c' : np.nan, 'd' : np.nan, 'e' : np.nan }
]

df = pd.DataFrame(list_of_dicts)
#Input DataFrame
-----|-------|-------|-------|------|------|
| a | b | c | d | e |
-----|-------|-------|-------|------|------|
0 | NaN | 4 | NaN | 5 | 2 |
1 | 1 | NaN | NaN | NaN | NaN |
2 | 7 | 5 | 0 | 5 | 3 |
3 | NaN | 3 | NaN | 5 | NaN |
4 | NaN | NaN | NaN | NaN | NaN |

我想创建一个新列 Op ,它从右边取第一列不是 NaN 并填充值。如果所有观测值都是 NaN,则 Op = NaN。
#Output
-----|-------|-------|-------|------|------|------|
| a | b | c | d | e | Op |
-----|-------|-------|-------|------|------|------|
0 | NaN | 4 | NaN | 5 | 2 | 2 |
1 | 1 | NaN | NaN | NaN | NaN | 1 |
2 | 7 | 5 | 0 | 5 | 3 | 3 |
3 | NaN | 3 | NaN | 5 | NaN | 5 |
4 | NaN | NaN | NaN | NaN | NaN | NaN |
解释:
  • 第 0 行 - 因为 'e' 是从右边开始的第一列不是 NaN,所以 Op = 2
  • 第 1 行 - 由于 'a' 是从右边开始不是 NaN 的第一列,所以 Op = 1
  • 第 2 行 - 因为 'e' 是从右边开始的第一列不是 NaN,所以 Op = 3
  • 第 3 行 - 因为 'd' 是从右边开始的第一列不是 NaN,所以 Op = 5
  • 第 4 行 - 由于所有行都是 NaN,所以 Op = NaN

  • 寻找使用 Python、Pandas 和 numpy 的解决方案。

    最佳答案

    试试 ffill

    df['new'] = df.ffill(1).iloc[:,-1]
    df
    Out[59]:
    a b c d e new
    0 NaN 4.0 NaN 5.0 2.0 2.0
    1 1.0 NaN NaN NaN NaN 1.0
    2 7.0 5.0 0.0 5.0 3.0 3.0
    3 NaN 3.0 NaN 5.0 NaN 5.0
    4 NaN NaN NaN NaN NaN NaN

    关于Python - 创建一个新列,该列从右侧取第一列不是 Pandas 中的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66978365/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com