pandas Python -将Dataframe中的所有项转换为字符串

gwbalxhn  于 2022-12-21  发布在  Python
关注(0)|答案(4)|浏览(393)

我遵循了以下程序: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 中所有非字符串的项转换为字符串?

wvt8vs2t

wvt8vs2t1#

您可以使用以下命令:

df = df.astype(str)

出于好奇,我决定看看在效率方面,公认的解决办法和我的解决办法是否有什么不同。
结果如下:
实施例DF:

df = pd.DataFrame([list(range(1000))], index=[0])

测试df.astype

%timeit df.astype(str) 
>> 100 loops, best of 3: 2.18 ms per loop

测试df.applymap

%timeit df.applymap(str)
1 loops, best of 3: 245 ms per loop

看来df.astype是相当快得多:)

zpf6vheq

zpf6vheq2#

您可以使用applymap方法:

df = df.applymap(str)
kyks70gy

kyks70gy3#

    • 在panda〉= 1.0的情况下,现在有一个专用的字符串数据类型:**

可以使用.astype('string')将列转换为pandastring数据类型

df = df.astype('string')

这与使用str不同,str设置Pandas的'object'数据类型:

df = df.astype(str)

当您查看 Dataframe 的信息时,您可以看到数据类型的差异:

df = pd.DataFrame({
    'zipcode_str': [90210, 90211] ,
    'zipcode_string': [90210, 90211],
})

df['zipcode_str'] = df['zipcode_str'].astype(str)
df['zipcode_string'] = df['zipcode_str'].astype('string')

df.info()

# you can see that the first column has dtype object
# while the second column has the new dtype string
 #   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
 0   zipcode_str     2 non-null      object
 1   zipcode_string  2 non-null      string
dtypes: object(1), string(1)

来自文档:
'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

ccrfmcuu

ccrfmcuu4#

这对我很有效:

dt.applymap(lambda x: x[0] if type(x) is list else None)

相关问题