我遵循了以下程序:In Python, how do I convert all of the items in a list to floats?,因为我的Dataframe的每一列都是list
,但我选择将所有值更改为strings
,而不是floats
。df = [str(i) for i in df]
但这次失败了。
它只是擦除了除第一行列名之外的所有数据。
然后,尝试df = [str(i) for i in df.values]
导致将整个Dataframe更改为一个大列表,但这会使数据变得太混乱,无法满足我的脚本的目标,即将Dataframe导出到Oracle表。
有没有一种方法可以将 Dataframe 中所有非字符串的项转换为字符串?
4条答案
按热度按时间wvt8vs2t1#
您可以使用以下命令:
出于好奇,我决定看看在效率方面,公认的解决办法和我的解决办法是否有什么不同。
结果如下:
实施例DF:
测试
df.astype
:测试
df.applymap
:看来
df.astype
是相当快得多:)zpf6vheq2#
您可以使用
applymap
方法:kyks70gy3#
可以使用.astype('string')将列转换为pandastring数据类型:
这与使用
str
不同,str
设置Pandas的'object'数据类型:当您查看 Dataframe 的信息时,您可以看到数据类型的差异:
来自文档:
'string'扩展类型解决了对象dtype NumPy数组的几个问题:
1)你可能会意外地在对象数据类型数组中存储字符串和非字符串的混合体。StringArray只能存储字符串。
2) object dtype breaks dtype-specific operations like DataFrame.select_dtypes(). There isn’t a clear way to select just text while excluding non-text, but still object-dtype columns.
3)读代码时,对象数据类型数组的内容不如字符串清楚。
有关Pandas1.0的信息可以在这里找到:
https://pandas.pydata.org/pandas-docs/version/1.0.0/whatsnew/v1.0.0.html
ccrfmcuu4#
这对我很有效: