我有一個由人類編寫的分類數據的Pandas DataFrame。讓我們這樣說:將字符串函數應用於可以是NaN的元素
>>> 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
值,並能有效地利用那些想這個改造後仍爲nan
秒。但是,如果我有這樣的:
>>> 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是一個浮動,而其他人都是字符串),但我可以」 t找到一個優雅的方式寫這個..
任何想法?
輝煌,非常感謝。這是最乾淨的方式,我不知道'矢量化字符串方法':http://pandas.pydata.org/pandas-docs/stable/basics.html#vectorized-string-methods – user1496984
此外更多文檔:http://pandas.pydata.org/pandas-docs/stable/text.html#text-string-methods – user1496984