修改包含nan的pandas列的值。

问题描述 投票:0回答:1

我没有找到像我这样的问题... ...

顺便说一下,我有一个带列的df Year 像这样。

    2009)
    1998)
    2000)
    1980)
    2002)
    nan
    nan
    nan
    2014)
    1973)
    nan

我想把括号剪掉,但是当我用... ... data['Year'] = data['Year'][:-1] 一事无成

如果我使用 data['Year'] = data['Year'].apply(lambda x: x[:-1]) 它给我

TypeError: 'float' object is not subscriptable

我猜测问题出在 "nan "值上,但如何解决这个问题?应该是可以将nans转换为0的。

非常感谢

python pandas
1个回答
2
投票

试着用字符串替换和链式填充na去掉NaNa。

df.Year=df.Year.str.replace('[\(\)]','').fillna(0)

enter image description here


1
投票

我通常这样做。

data['Year'] = data['Year'].apply(lambda x: x[:-1] if isinstance(x, str) else '')

在else之后,你可以放上你想出现的值,如果它不是一个字符串。


1
投票

Pandas实现了一个 .str 属性来操作文本数据。

data['Year'] = data['Year'].str[:-1]
© www.soinside.com 2019 - 2024. All rights reserved.