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

何塞·维加(Jose Vega):

我有一个看起来像这样的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

我想获取所有TYPE2具有相同ID且值不为的列NaN我们可以假设:

  1. TYPE2每个ID 一行有一个非空值。
  2. 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相同时无法建立填充条件。有150万左右的不同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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列中的相同值将值分配给该列

如何转换一个column的值列表并将其分配给0或1

如果另一列在SQL Server中相同,则获取具有最小列值的行

获取具有column1最小值和column2最大值大于100 DataFram的行

从文本中获取值并将其分配给变量

C#-修改DaraGridView中column1的值并将其放在新列中

如何动态创建数组元素并将值(来自具有相同名称的变量)分配给元素

Javascript:如何从对象数组中获取分配给相同属性的值的唯一列表?

从具有键值对的列中获取部分值,并将其分配给Spark Dataframe中的新列

熊猫-如果存在匹配则从column2值中删除col1值(正则表达式与动态值匹配)

在column1中查找确切的单元格值,并将column2的值连接到新列中

有人可以解释如何从选择中获取列的值并将其分配给postgres中的另一个选择

如何选择具有不同日期条件的同一列值并在同一查询中显示为column1和column2

Informatica映射以将column1 position1的值分配给column2 position2

SQL根据两行中column1中的值选择一column2

获取值并将值分配给Java数组?

提取列值并将其作为Spark数据帧中的数组分配给另一列

根据 column1 的值将 column1 的值设置为 column2 的值

如何找到其他列(column2)的行值,如果我的行值在另一行的同一列(column1)中

根据另一列中的值按 column1 或 column2 对行进行排序

如果列值 == "character(0)",则从另一列获取值

Pandas 列出列中的唯一值并将其分配给单独的列

从 Pandas 列中查找以前的非相同值并将其作为 Pandas 列分配给数据框

比较 column1(选项集)与 SSIS 中 column2(查找)中的设置值

在 PostgresQL 表中,如何使用 column1 中的所有值创建列,而 column1 中当前行的值出现在 column2 中?

在 PostgresQL 表中,如何创建包含 column1 中所有出现在 column2 中的所有值的列,以便出现该行的 column1 值?

在 R 中的数据框中,Column1 的值是 Column2 的最小值

如何找出具有多个条件的相同值并将同一列的值放在不同的列中?

R:对于 dfs 列表,过滤 Column1 中的值,以提取另一个 Column2 的平均值和 SD(仅在 Column1 中具有过滤值的行)