gpt4 book ai didi

python - 从 column1 动态获取值并将其分配给同一列中的 NaN 值,如果它们都具有相同的 column2 值

转载 作者:行者123 更新时间:2023-12-04 09:05:35 24 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame:

      ID  DESCRIPTION TYPE1 TYPE2
12345678 EXAMPLENAME1 874.4 NaN
12345678 EXAMPLENAME2 854.4 NaN
12345678 EXAMPLENAME3 874.4 B-5
78978999 EXAMPLENAME2 788.8 B-9
78978999 EXAMPLENAME4 978.2 NaN
78978999 EXAMPLENAME1 288.3 NaN
92124566 EXAMPLENAME3 369.1 NaN
92124566 EXAMPLENAME3 289.1 B-3
92124566 EXAMPLENAME3 959.1 NaN
我想获取所有具有相同 ID 且值不是 TYPE2NaN 列。我们可以假设:
  • 每个 ID 只有一个 TYPE2 行将具有非空值。
  • TYPE2 每个 ID 都是唯一的。

  • 最终产品应如下所示:
          ID  DESCRIPTION TYPE1 TYPE2
    12345678 EXAMPLENAME1 874.4 B-5
    12345678 EXAMPLENAME2 854.4 B-5
    12345678 EXAMPLENAME3 874.4 B-5
    78978999 EXAMPLENAME2 788.8 B-9
    78978999 EXAMPLENAME4 978.2 B-9
    78978999 EXAMPLENAME1 288.3 B-9
    92124566 EXAMPLENAME3 369.1 B-3
    92124566 EXAMPLENAME3 289.1 B-3
    92124566 EXAMPLENAME3 959.1 B-3
    我已经尝试过 ffill ,但无法建立仅当 ID 相同时才填充的条件。大约有 1,500,000 个不同的 TYPE2ID 值,因此像 df.loc[df["ID"]="12345678", "TYPE2"] = "B-5" 那样手动建立它们是行不通的。
    如何让 df.loc 检查 ID 是否相同,然后从 TYPE2 获取非空值并将其分配给其余的 ID 行?有没有其他方法可以获得相同的结果?

    最佳答案

    要在每个 ID 内填充空值,我们必须先使用 .groupby,然后组合 .bfill().ffill()

    df['TYPE2'] = df.groupby('ID')['TYPE2'].bfill().ffill()
    #result
    ID DESCRIPTION TYPE1 TYPE2
    0 12345678 EXAMPLENAME1 874.4 B-5
    1 12345678 EXAMPLENAME2 854.4 B-5
    2 12345678 EXAMPLENAME3 874.4 B-5
    3 78978999 EXAMPLENAME2 788.8 B-9
    4 78978999 EXAMPLENAME4 978.2 B-9
    5 78978999 EXAMPLENAME1 288.3 B-9
    6 92124566 EXAMPLENAME3 369.1 B-3
    7 92124566 EXAMPLENAME3 289.1 B-3
    8 92124566 EXAMPLENAME3 959.1 B-3

    关于python - 从 column1 动态获取值并将其分配给同一列中的 NaN 值,如果它们都具有相同的 column2 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63457877/

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