所以,我有一个相当大的数据框,有 85 列和近 90,000 行,我想在所有数据框中使用 str.lower() 。但是,有几列包含数字数据。有一个简单的解决方案吗?
> df
A B C
0 10 John Dog
1 12 Jack Cat
2 54 Mary Monkey
3 23 Bob Horse
然后,使用 df.applymap(str.lower) 之类的东西后我会得到:
> df
A B C
0 10 john dog
1 12 jack cat
2 54 mary monkey
3 23 bob horse
目前它显示此错误消息:
TypeError: descriptor 'lower' requires a 'str' object but received a 'int'
从 pandas 1.X 开始,您可以使用以下命令有效地选择仅包含字符串的列select_dtypes("string") https://stackoverflow.com/a/62978895/4909087:
string_dtypes = df.convert_dtypes().select_dtypes("string")
df[string_dtypes.columns] = string_dtypes.apply(lambda x: x.str.lower())
df
A B C
0 10 john dog
1 12 jack cat
2 54 mary monkey
3 23 bob horse
df.dtypes
A int64
B string
C string
dtype: object
这避免了对非字符串数据的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)