python保存、存储列表(list)数据到Excel,再读取的时候会变成字符串(str)的问题,已解决。

在python中列表是一个非常有用的容器,除了平常用来装数字、字符,我还经常用来装dataframe,或者列表可以作为dataframe的具体值存入,很是舒服。

但问题是,当我们将复杂的数据保存起来的时候,比如常存入Excel,再次导出时,你的数据全部是字符串(str)类型了,这是因为这种保存方式是以文本写入,而不是二进制数据保存,所以你只要存进去,再次导出来就是字符串了。明白了原理,解决方法就很简单了!

# 设置测试数据
Database = pd.DataFrame()
Database['test'] = [['1', '3', '4'], ['2', '3', '5'], ['1', '2', '3', '5'], ['2', '5']]

print('原数据格式类型之列表:', type(Database['test'].iloc[0]))
# 原数据格式类型之列表: <class 'list'>

# 写入excel
Database.to_excel('./Database_str.xlsx', index=False)

# 再读取出来,问题就出现了,list变成了str
Database = pd.read_excel('./Database_str.xlsx')
print('读入后数据格式类型之列表:', type(Database['test'].iloc[0]))
# 读入后数据格式类型之列表: <class 'str'>

解决方法:

1.还原函数(最有效的,简直yyds!)

# 主要函数是eval(),自带的,直接调用即可,也可以写成我这样的map形式

def fun_str_list(x):
    x = eval(x)    # 格式还原为列表
    return x
symptoms = list(map(fun_str_list, Database['test']))
print('还原后数据格式类型之列表:', type(symptoms))
# 还原后数据格式类型之列表: <class 'list'>

2.别存入Excel,其他方式存入,但可能造成不方便,其他Excel软件打不开。

# 用pickle形式存储二进制文件即可
import pickle

1)
# 存储:
Database.to_pickle('./Database.pickle')
# 读取:
Database = pd.read_pickle('./Database.pickle')


2)
# Write to the file
f = open('Database.data', 'wb')
pickle.dump(Database, f)  # dump the object to a file
f.close()

# Read back from the file
f = open('Database.data', 'rb')
Database = pickle.load(f)  # load the object from file

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值