【发布时间】:2016-02-02 23:55:49
【问题描述】:
我有一个 Pandas DataFrame,其中包含人类编写的分类数据。让我们这样说:
>>> df = pd.DataFrame({'name': ["A", " A", "A ", "b", "B"]})
name
0 A
1 A
2 A
3 b
4 B
我想通过去除空格并将它们大写来规范化这些值。这很好用:
>>> df.apply(lambda x: x['name'].upper().strip(), axis=1)
0 A
1 A
2 A
3 B
4 B
我遇到的问题是我还有一些 nan 值,我实际上希望这些值在此转换后保持为 nans。但如果我有这个:
>>> df2 = pd.DataFrame({'name': ["A", " A", "A ", "b", "B", np.nan]})
>>> df2.apply(lambda x: x['name'].upper().strip(), axis=1)
("'float' object has no attribute 'upper'", u'occurred at index 5')
我想要的是这个:
0 A
1 A
2 A
3 B
4 B
5 NaN
我明白为什么会发生这种情况(nan 是浮点数,而其他是字符串),但我找不到写这个的优雅方式..
有什么想法吗?
【问题讨论】: