【发布时间】:2017-01-25 12:17:51
【问题描述】:
我有以下数据框
ipdb> csv_data
country_edited sale_edited date_edited transformation_edited
0 India 403171 20090101 10
1 Bhutan 394096 20090101 20
2 Nepal Set Null 20090101 30
3 madhya 355883 20090101 40
4 sudan Set Null 20090101 50
我想将所有包含Set Null 的列值替换为Nan,所以我采用了以下方式
import numpy
def set_NaN(element):
if element == 'Set Null':
return numpy.nan
else:
return element
csv_data = csv_data.applymap(lambda element: set_NaN(element))
但它并没有改变任何东西
ipdb> print csv_data
country_edited sale_edited date_edited transformation_edited
0 India 403171 20090101 10
1 Bhutan 394096 20090101 20
2 Nepal Set Null 20090101 30
3 madhya 355883 20090101 40
4 sudan Set Null 20090101 50
ipdb>
但是当我只打印csv_data.applymap(lambda element: set_NaN(element)) 时,如下所示,我可以看到输出,但是当分配回来时,我无法获得我想要的数据
ipdb> csv_data.applymap(lambda element: set_NaN(element))
country_edited sale_edited date_edited transformation_edited
0 India 403171 20090101 10
1 Bhutan 394096 20090101 20
2 Nepal NaN 20090101 30
3 madhya 355883 20090101 40
4 sudan NaN 20090101 50
那么如何根据某个字符串将列值替换为 NaN 呢?
【问题讨论】:
-
你有什么收获吗:
csv_data = csv_data.applymap(set_NaN)。此外,applymap需要一个可调用对象,因此这里不需要额外的lambda。 -
好吧我不知道,我是熊猫新手
标签: python pandas python-applymap