将NaN值携带/复制到另一列DF Pandas

时间:2018-06-14 18:29:37

标签: python pandas

我有一个看起来像这样的df:

|  id | qty  | item |
+-----+------+------+
| 001 |  700 | CB04 |
| 002 |  500 | NaN  |
| 003 | 1500 | AB01 |

我想将NaN值从df['item']复制到df['qty'],以便它看起来像这样:

|  id | qty  |   item   |
+-----+------+----------+
| 001 |  700 | CB04 box |
| 002 |  NaN | NaN      |
| 003 | 1500 | AB01 box |

我做了以下

df['qty'] = df.loc[df['item'].isnull(),'item']

但我的df原来是这样的。

|  id | qty |   item   |
+-----+-----+----------+
| 001 | NaN | CB04 box |
| 002 | NaN | NaN      |
| 003 | NaN | AB01 box |

1 个答案:

答案 0 :(得分:1)

您的方法无效,因为您选择的列 item ,当它为空时,并将 qty 设置为等于结果,始终为NaN,因此使用qty填充 NaN

loc 与布尔索引配合使用,并设置所需的列。你很亲密,只是没有正确分配。

df.loc[df.item.isnull(), 'qty'] = np.nan

   id     qty  item
0   1   700.0  CB04
1   2     NaN   NaN
2   3  1500.0  AB01

同样使用 np.where (当我在300k行数据帧上测试时速度稍快)

df.qty = np.where(df.item.isnull(), np.nan, df.qty)