【发布时间】:2016-01-14 05:23:45
【问题描述】:
我有一个数据框 df,我想根据应用于其他列的条件填充列中的值
DF的结构,ID后面有几列:
ID ...... col1 col2 col3 col4
1 A1 A1 A1 A1
2 G3 D5
3 R6
4 Q3
5 M5 N8
我想创建两个名为“final_col”和“status”的新列,其中“final_col”的值来自 col1 或 col2 或 col3 或 col4,具体取决于哪个 col 具有第一个非空白(非空/NaN)值。
“状态”列只是列的名称
预期输出:
ID ...... col1 col2 col3 col4 final_col status
1 A1 A1 A1 A1 A1 col1
2 G3 D5 G3 col2
3 R6 L4 R6 col1
4 Not_found Not_found
5 M5 N8 M5 col2
我知道如何在 excel 中执行此操作,嵌套 if 也是如此,假设 ID 为单元格“A1”
在'final_col'的第一行:
=IF(A2<>"",A2,IF(B2<>"",B2,IF(C2<>"",C2,IF(D2<>"",D2,"Not_found"))))
对于“状态”列
=IF(A2<>"","col1",IF(B2<>"","col2",IF(C2<>"","col3",IF(D2<>"","col4","Not_found"))))
P.S:请在您的解决方案中使用列名,而不是索引,因为数据框的结构可能会有所不同(列的顺序)
提前致谢
【问题讨论】:
-
您为什么期望在第 4 行获得
Not found?它应该是您数据框中的Q3吗?
标签: python-3.x pandas dataframe