Một giải pháp khả thi khác, trong trường hợp cột không chỉ có chuỗi mà còn có số, là sử dụng astype(str).str.lower()
hoặc to_string(na_rep='')
bởi vì nếu không, cho rằng một số không phải là chuỗi, khi hạ xuống nó sẽ trả về NaN
, do đó:
import pandas as pd
import numpy as np
df=pd.DataFrame(['ONE','Two', np.nan,2],columns=['x'])
xSecureLower = df['x'].to_string(na_rep='').lower()
xLower = df['x'].str.lower()
sau đó chúng tôi có:
>>> xSecureLower
0 one
1 two
2
3 2
Name: x, dtype: object
và không
>>> xLower
0 one
1 two
2 NaN
3 NaN
Name: x, dtype: object
biên tập:
nếu bạn không muốn mất NaN, thì sử dụng bản đồ sẽ tốt hơn, (từ @ wojciech-walczak và @ cs95 comment) nó sẽ giống như thế này
xSecureLower = df['x'].map(lambda x: x.lower() if isinstance(x,str) else x)
str.casefold
so sánh chuỗi gấp trường hợp tích cực hơn. Thêm thông tin trong câu trả lời này .