当前位置: 首页 > news >正文

做网站的股哥安康网站设计

做网站的股哥,安康网站设计,h5 网站模板,郑州百度网站快速优化文章目录 直接存储join list 变成字符串存储json.dumps序列化存储以及json.loads反序列化读取总结 之所以分析这个问题,是因为读者在跟第三方数据供应商对接数据的时候,老是会遇到数据加载都会出错的问题,其中一个原因就是list类型数据没有正确储存,于是笔者在这篇文章里面详细…

文章目录

  • 直接存储
  • join list 变成字符串存储
  • json.dumps序列化存储以及json.loads反序列化读取
  • 总结

之所以分析这个问题,是因为读者在跟第三方数据供应商对接数据的时候,老是会遇到数据加载都会出错的问题,其中一个原因就是list类型数据没有正确储存,于是笔者在这篇文章里面详细分析一下list数据怎么优雅的写入csv以及读取.

直接存储

第一种方法,直接存,不做任何转换

def direct_write_read():path = Path(__file__).parent.joinpath('direct.csv')df = pd.DataFrame({'id': [1,2,3],'tags': [['tag1', 'tag2'], ['tag3'], ['tag4', 'tag5']]})df.to_csv(path, index=False, encoding='utf-8')rd_df = pd.read_csv(path, encoding='utf-8')print(rd_df['tags'])

csv文件内容

id,tags
1,"['tag1', 'tag2']"
2,['tag3']
3,"['tag4', 'tag5']"

程序打印结果

0    ['tag1', 'tag2']
1            ['tag3']
2    ['tag4', 'tag5']
Name: tags, dtype: object

整个程序能运行,应为都是用的python写文件读取文件,但是csv文件内容不标准,这种处理方式存在潜在问题,容易出现python语言能读写,但是换成其它语言程序读取此csv就可能出现错误,因此不推荐这种处理方式.

join list 变成字符串存储

第二种方法,使用','.join(list)方法将列表连接成字符串存csv,读取的时候再将字符串按照连接字符进行分割.

def join_write_read():path = Path(__file__).parent.joinpath('join.csv')df = pd.DataFrame({'id': [1,2,3],'tags': [['tag1', 'tag2'], ['tag3'], ['tag4', 'tag5']]})df['append'] = df['tags'].apply(lambda x: ','.join(x))df[['id', 'append']].to_csv(path, index=False, encoding='utf-8')rd_df = pd.read_csv(path, encoding='utf-8')rd_df['tags'] = rd_df['append'].apply(lambda x: x.split(','))print(rd_df['tags'])

csv文件内容:

id,append
1,"tag1,tag2"
2,tag3
3,"tag4,tag5"

注意这里自动加入了双引号 文本限定符,因为连接字符为逗号和csv分割符号一致,使用双引号限定符避免因为逗号问题破坏csv结构.
程序输出结果:

0    [tag1, tag2]
1          [tag3]
2    [tag4, tag5]

这种方法只能正对简单的字符串列表,且列表中每一个元素字符串不能存再链接字符,不然读取的数据split后就错误
所以这种方法只能在你确定了列表中元素字符串都不可能有用于连接的字符时,才使用.总之,此方法也有其局限性.

json.dumps序列化存储以及json.loads反序列化读取

这是目前最好的处理方法,将列表使用json.dumps方法序列化为json字符串存储,读取的时候反序列化成列表即可:

def json_write_read():path = Path(__file__).parent.joinpath('json.csv')df = pd.DataFrame({'id': [1,2,3],'tags': [['tag1', 'tag2'], ['tag3'], ['tag4', 'tag5']]})df['json'] = df['tags'].apply(json.dumps)df[['id', 'json']].to_csv(path, index=False, encoding='utf-8')rd_df = pd.read_csv(path, encoding='utf-8')rd_df['tags'] = rd_df['json'].apply(json.loads)print(rd_df['tags'])print(rd_df['tags'][0])

csv文本内容:

id,json
1,"[""tag1"", ""tag2""]"
2,"[""tag3""]"
3,"[""tag4"", ""tag5""]"

非常标准的list字符串存csv
程序输出结果

0    [tag1, tag2]
1          [tag3]
2    [tag4, tag5]
Name: tags, dtype: object

此方法还可以用来存储以及读取向两数据,如下例子处理向量数据的读写问题

def vec_write_read():path = Path(__file__).parent.joinpath('vec.csv')df = pd.DataFrame({'id': [1,2,3],'vec': [[1, 2, 3], [2, 0, 1], [1, 1, 2]]})df['vec_s'] = df['vec'].apply(json.dumps)df[['id', 'vec_s']].to_csv(path, index=False)rd_df = pd.read_csv(path)rd_df['vec'] = rd_df['vec_s'].apply(json.loads)print(rd_df['vec'])

csv文件内容:

id,vec_s
1,"[1, 2, 3]"
2,"[2, 0, 1]"
3,"[1, 1, 2]"

输出结果:

0    [1, 2, 3]
1    [2, 0, 1]
2    [1, 1, 2]
Name: vec, dtype: object

如果这个场景还在用第二种join方式转成字符串还需要把每个维度数值转为字符串才能join,实现起来就不太合适了.

总结

所以pandas里面list数据列存csv最佳做法还是将该列数据json.dumps成json字符串保存,读取的时候使用json.loads还原

http://www.dtcms.com/a/534203.html

相关文章:

  • 企业网站备案名称要求物流信息网站有哪些
  • 网站开发培训网站旅行志 wordpress
  • 购物网站详细设计在网站上做远程教育系统多少钱
  • 教育类门户网站长沙网上商城
  • 网站开发能进无形资产吗深圳网站建设交易
  • 沧州市建设局网站做网站美工要学什么
  • Acrobat js 数组操作与 splice 方法解决动态表单字段重复值问题
  • 用个人免费空间快速建立个人网站后方平台没有网站流量怎么办
  • 河北省网站备案步骤宣讲家网站做四讲四有模范
  • 重庆优化网站公司微网站微名片
  • 电子商务物流网站建设规划方案洛阳网站建设洛阳网站制作
  • 湖南住房和城乡建设部网站网站开发套餐
  • 做网站用的什么编程语言免费海报素材网站大全
  • 十分钟编码,两小时查错:调试效率革命
  • 网站优化招聘南通网页设计培训
  • 网页设计好的公司网络优化器下载
  • 建设一个会员积分网站主要给人家做网站的公司
  • 网络教学网站建设百度推广费用一年多少钱
  • 如何提高网站的收录量网站后台开发费用
  • 网站后台更新前台更新不门户型网站建设
  • 用jsp做网站一般会用到什么搜索引擎优化策略应该包括
  • seo网站优化服务商韩国时尚网站欣赏
  • 大连建设网站哪家好院校建设网站群的原因
  • 网站开发项目建设规范公司发展规划范文
  • 金融企业类网站模板软件最全网站
  • 用糖做的网站课程网站建设的设计报告
  • mooc网站开发案例在越南做一个网站怎么做
  • 北京政务服务官方网站免费快速网站
  • 网站一级域名申请网页设计师和ui设计师区别
  • 做情趣网站违法吗毕设网站