web-dev-qa-db-ja.com

pandasで文字列を小文字に変換する

ドメイン名を含むデータがあります:

 url          var1
www.CNN.com   xsd
www.Nbc.com   wer
www.BBc.com   xyz
www.fOX.com   zyx
....

データはシリーズタイプです。次を使用して、url変数を小文字に変換しています。

df.apply(lambda x: x.astype(str).str.lower())

ただし、それらは同じままです。

私は何を間違えていますか?

10
Feyzi Bagirov
df['url'] = df['url'].str.lower()

シリーズで動作し、小文字のバージョンに置き換える必要があります。

17
David

出力を割り当て直す必要があると思います。列applyでのみ機能する場合は、urlを省略した方が良いでしょう。

df = pd.DataFrame({'url': ['www.CNN.com', 'www.Nbc.com', 'www.BBc.com', 'www.fOX.com'], 
                   'var1': ['XSD', 'wer', 'xyz', 'zyx']})

print (df)
           url var1
0  www.CNN.com  XSD
1  www.Nbc.com  wer
2  www.BBc.com  xyz
3  www.fOX.com  zyx

#if types of column is str, astype is not necessary
df.url = df.url.astype(str).str.lower()
print (df)
           url var1
0  www.cnn.com  XSD
1  www.nbc.com  wer
2  www.bbc.com  xyz
3  www.fox.com  zyx

ただし、dfのすべての列をlowercase stringsに変換する必要がある場合:

df = df.astype(str).apply(lambda x: x.str.lower())
print (df)
           url var1
0  www.cnn.com  xsd
1  www.nbc.com  wer
2  www.bbc.com  xyz
3  www.fox.com  zyx
2
jezrael

使用できる単一の列を変換するには、

df.column_name.str.lower()

または

df['column_name'].str.lower()

お役に立てれば !

2
Vivek Ananthan