私は人が書いたカテゴリデータを持つ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
sとままにしておきたいです。私はこれがある場合でも、私が好きな何
>>> 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
「なぜこれが起こっている私は(他の人が文字列である一方でナンは、フロートである)を理解し、私がすることができますトンこれを書いているエレガントな方法を見つける。..
任意の考え?
ブリリアント、おかげで多くのことを。これは、クリーンな方法である、と私は「ベクトル化文字列の方法」について知りませんでした:ここ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