用 NaN 替换 'UN' 表示的值

Posted

技术标签:

【中文标题】用 NaN 替换 \'UN\' 表示的值【英文标题】:Replacing values represented by 'UN' with NaN用 NaN 替换 'UN' 表示的值 【发布时间】:2018-11-26 19:43:40 【问题描述】:

我在练习导入和汇总数据时遇到了这个问题。请帮忙?

图像似乎没有显示任何错误,但我不知道如何解决“联合国”和 np.nan 问题

# Names of the columns we're searching for missing values

columns = ['median', 'p25th', 'p75th']

# take a look at the dtypes
print(recent_grads[columns].dtypes)

# find how missing values are represented
print(recent_grads['median'].unique())
# replace missing values with NaN 
for column in columns:
    recent_grads.loc[recent_grads['median'] == 'UN', column] = np.nan

最终输出:

【问题讨论】:

欢迎来到 Stack Overflow!请不要使用图像来传达文字信息。 Edit 你的问题用相应的代码替换它们。此外,寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有这个,你的问题是题外话,很可能被关闭。请构造一个Minimal, Complete, and Verifiable example 并包含它。 您有什么问题/疑问? 我们不是来帮你做作业或回答你的测试的。请自己做。 【参考方案1】:

在读取 csv 时,使用参数“na_values”。 pd.read_csv('', na_values = 'UN')

【讨论】:

【参考方案2】:

您似乎需要导入 numpy 并使用 nan 以他们希望的方式解决该问题。 'nan' 是 'not a number' 的缩写,是他们希望您用来表示缺少值的内容。

import numpy as np

# ... your code up to the last bit ...

for value in recent_grads['median'].unique():
    if value == 'UN':
        value = np.nan

【讨论】:

这只是改变循环内的变量value,并没有修改DataFrame 完全正确.. 使用.at 索引df 的特定位置

以上是关于用 NaN 替换 'UN' 表示的值的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 替换 NaN 值

用相同的值替换特定行中的所有 NaN - Matlab

用数据框的NaN替换特定范围的值

Pandas 多索引行和列:用匹配行中的值替换 NaN

熊猫:SettingWithCopyWarning [重复]

数据库中的空值与NULL的区别以及python中的NaN和None