【问题标题】:Assigning np.nans to rows of a Pandas column using a query使用查询将 np.nans 分配给 Pandas 列的行
【发布时间】:2020-06-12 15:04:09
【问题描述】:

当满足某些条件时,我想将 NaN 分配给 Pandas 数据框中的列的行。

以下是一些可重现的示例:

'{"Price":{"1581292800000":21.6800003052,"1581379200000":21.6000003815,"1581465600000":21.6000003815,"1581552000000":21.6000003815,"1581638400000":22.1599998474,"1581984000000":21.9300003052,"1582070400000":22.0,"1582156800000":21.9300003052,"1582243200000":22.0200004578,"1582502400000":21.8899993896,"1582588800000":21.9699993134,"1582675200000":21.9599990845,"1582761600000":21.8500003815,"1582848000000":22.0300006866,"1583107200000":21.8600006104,"1583193600000":21.8199996948,"1583280000000":21.9699993134,"1583366400000":22.0100002289,"1583452800000":21.7399997711,"1583712000000":21.5100002289},"Target10":{"1581292800000":22.9500007629,"1581379200000":23.1000003815,"1581465600000":23.0300006866,"1581552000000":22.7999992371,"1581638400000":22.9599990845,"1581984000000":22.5799999237,"1582070400000":22.3799991608,"1582156800000":22.25,"1582243200000":22.4699993134,"1582502400000":22.2900009155,"1582588800000":22.3248996735,"1582675200000":null,"1582761600000":null,"1582848000000":null,"1583107200000":null,"1583193600000":null,"1583280000000":null,"1583366400000":null,"1583452800000":null,"1583712000000":null}}'

在这个特定的玩具示例中,当“Target10”列具有 NaN 时,我想将 NaN 分配给“价格”列。 (一般情况下情况可能更复杂)

这行代码实现了特定目标:

toy_data.Price.where(toy_data.Target10.notnull(), toy_data.Target10)

但是,当我尝试使用查询并将 NaN 分配给目标列时,我失败了:

toy_data.query('Target10.isnull()', engine = 'python').Price = np.nan

上面的行使toy_data保持不变。

为什么会这样以及我应该如何使用 query 替换特定行中的值?

【问题讨论】:

  • query 用于选择,而不是用于设置值,我认为query 不可能
  • toy_data.loc[toy_data['Target10'].isna(), 'Price'] = np.nan

标签: python-3.x pandas assign


【解决方案1】:

一种方法是 -

import numpy as np 
toy_data['Price'] = np.where(toy_data['Target10'].isna(), np.nan, toy_data['Price'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多