【Python小技巧】df转字符串用df.to_string(),字符串转换回DataFrame怎么办?


前言

平常我们使用pandas,一般使用的是DataFrame和Series,但个别交换数据的时候,只能使用字符串,我们需要将df转为字符串输出。但交换完的数据,我们又需要将字符串再转回DataFrame格式,这个怎么办呢?

下文我们就来看看,如何处理?文中df代表DataFrame数据。

一、两行语句搞定数据转换

  1. df转为字符串
    dfstr = df.to_string()

  2. 字符串转为df
    df2 = pd.read_csv(StringIO(dfstr), sep=‘\s+’)
    注:这里前提是str的确是df的数据组织方式。

二、使用方法示例

文中为了方便展示表格,使用了prettytable,如果报错没有该模块,使用如下语句安装即可。

pip install prettytable

完整演示代码如下:

# ===============表格美化输出===============
def df_table(df,index):
    import prettytable as pt
    tb = pt.PrettyTable()
    tb.add_column(index,df.index)
    for col in df.columns.values:
        tb.add_column(col, df[col])
    print(tb)

import pandas as pd
from io import StringIO

df = pd.DataFrame({'A' : ['1', '2', '3', '4'] * 3,
                   'B' : ['A', 'B', 'C'] * 4})

df_table(df,'原始df')

dfstr = df.to_string()
print('\ndfstr数据类型:\n',type(dfstr))
print('\ndfstr数据内容:\n',dfstr)

df2 = pd.read_csv(StringIO(dfstr), sep='\s+')
print('\ndf2数据类型:\n',type(df2))
print('\ndf2数据内容:\n',df2)
df_table(df2,'dfstr转df')

执行结果如下:

+--------+---+---+
| 原始df | A | B |
+--------+---+---+
|   0    | 1 | A |
|   1    | 2 | B |
|   2    | 3 | C |
|   3    | 4 | A |
|   4    | 1 | B |
|   5    | 2 | C |
|   6    | 3 | A |
|   7    | 4 | B |
|   8    | 1 | C |
|   9    | 2 | A |
|   10   | 3 | B |
|   11   | 4 | C |
+--------+---+---+

dfstr数据类型: <class 'str'>

dfstr数据内容:
     A  B
0   1  A
1   2  B
2   3  C
3   4  A
4   1  B
5   2  C
6   3  A
7   4  B
8   1  C
9   2  A
10  3  B
11  4  C

df2数据类型: <class 'pandas.core.frame.DataFrame'>

df2数据内容:
     A  B
0   1  A
1   2  B
2   3  C
3   4  A
4   1  B
5   2  C
6   3  A
7   4  B
8   1  C
9   2  A
10  3  B
11  4  C
+-----------+---+---+
| dfstr转df | A | B |
+-----------+---+---+
|     0     | 1 | A |
|     1     | 2 | B |
|     2     | 3 | C |
|     3     | 4 | A |
|     4     | 1 | B |
|     5     | 2 | C |
|     6     | 3 | A |
|     7     | 4 | B |
|     8     | 1 | C |
|     9     | 2 | A |
|     10    | 3 | B |
|     11    | 4 | C |
+-----------+---+---+
请按任意键继续. . .

总结

将DataFrame转化为str进行数据交换,但最终我们还是需要使用DataFrame来处理数据。在转换回DataFrame时,要注意str的存储内容依然保持DataFrame的格式形式,否则将引起转换异常。

使用以上方法,一般来说都不会有什么问题。如果系统已自动转为字符串,也可以使用步骤2转化为DataFrame。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值