作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个如下所示的 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 且值不是
TYPE2
的
NaN
列。我们可以假设:
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 个不同的
TYPE2
和
ID
值,因此像
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/
我是一名优秀的程序员,十分优秀!