楼主: 普鸭梨山大
1931 14

[问答] Python csv单元格中dict显示转化 [推广有奖]

  • 1关注
  • 0粉丝

本科生

89%

还不是VIP/贵宾

-

威望
0
论坛币
756 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
639 点
帖子
34
精华
0
在线时间
181 小时
注册时间
2017-8-25
最后登录
2019-6-17

20论坛币
收到一份数据,csv格式,截图处的列fea显示为dict形式,现在想通过python修改成以key名为变量,value在对应单元格的格式,(N行*key列)行数不能变;之前没用过Python,自己研究了一下也没得章法,拜托各位大神了,自己导入的都变成str没办法转成dict,附件中有期望格式。求类似代码,谢谢!


捕获.PNG (62.33 KB)

捕获.PNG

01.xlsx

54.92 KB

期望模板.xlsx

8.55 KB

期望输出格式

最佳答案

hanhyojoo1992 查看完整内容

这个代码了解一下 import pandas as pd data = pd.read_excel(r"E:\01.xlsx") data_res = pd.DataFrame() def func(df): for i in df.index: list_1 = df.iloc.split() for j in range(len(list_1)): column_res = list_1[j].split(":")[0] # try: # column_res = int(list_1[j].split(":")[0]) # except ValueError: # c ...
关键词:单元格
已有 1 人评分热心指数 收起 理由
我的素质低 + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
hanhyojoo1992 发表于 2018-5-25 17:16:01 |只看作者 |坛友微信交流群
这个代码了解一下
import pandas as pd

data = pd.read_excel(r"E:\01.xlsx")
data_res = pd.DataFrame()
def func(df):
    for i in df.index:
        list_1 = df.iloc[i,0].split()
        for j in range(len(list_1)):
            column_res = list_1[j].split(":")[0]
#             try:
#                 column_res = int(list_1[j].split(":")[0])
#             except ValueError:
#                 continue   
            data_res.loc[i,column_res] = list_1[j].split(":")[1]
func(data)
data_res.head(20)

使用道具

藤椅
普鸭梨山大 发表于 2018-5-28 14:19:35 |只看作者 |坛友微信交流群
自己顶一下,求解答啊!

使用道具

板凳
残阳_等待 发表于 2018-5-28 15:02:17 |只看作者 |坛友微信交流群
普鸭梨山大 发表于 2018-5-28 14:19
自己顶一下,求解答啊!
建议上传一下附件看看

使用道具

报纸
普鸭梨山大 发表于 2018-5-28 15:33:24 |只看作者 |坛友微信交流群
残阳_等待 发表于 2018-5-28 15:02
建议上传一下附件看看
已上传,谢谢关注

使用道具

地板
hanhyojoo1992 发表于 2018-5-29 14:52:32 |只看作者 |坛友微信交流群
import pandas as pd

data = pd.read_excel(r"E:\01.xlsx")

def func(df):
    d={}
    for i in df.index:
        d[i] = {}
        list_1 = df.iloc[i,0].split()
        for j in range(len(list_1)):
            d[i][list_1[j].split(":")[0]] = list_1[j].split(":")[1]
    return d

func(data)

你说的是这个格式吗 ?嵌套的字典

使用道具

7
普鸭梨山大 发表于 2018-5-29 15:35:08 |只看作者 |坛友微信交流群
好像不是,data是(30,1)的 dataframe,就算按 csvDictWriter导出也只在一列

使用道具

8
普鸭梨山大 发表于 2018-5-29 15:37:21 |只看作者 |坛友微信交流群
hanhyojoo1992 发表于 2018-5-29 14:52
import pandas as pd

data = pd.read_excel(r"E:\01.xlsx")
好像不是,data是(30,1)的 dataframe,我是按data.to_csv直接导出的,字典部分只在一列

使用道具

9
hanhyojoo1992 发表于 2018-5-29 15:43:57 |只看作者 |坛友微信交流群
普鸭梨山大 发表于 2018-5-29 15:37
好像不是,data是(30,1)的 dataframe,就算按 csvDictWriter导出也只在一列
你要的不是类似这样的结构吗:
{0: {'1': '0.3701',
  '10': '0.1228',
  '100': '5',
  '1008': '2',
  '1009': '1',
  '1018': '59',
  '1019': '1',
  '1020': '4',
  '1021': '2',
  '105': '27',
  '106': '1',
  '107': '2',
  '108': '1',
  '1084': '2',
  '1085': '1',
  '111': '26',
  '112': '2',
  '115': '14',
  '116': '2',
  '117': '1',
  '118': '1',
  '123': '250',
  '124': '11',
  '125': '98',
  '126': '7',
  '133': '59',

使用道具

10
普鸭梨山大 发表于 2018-5-29 15:49:08 |只看作者 |坛友微信交流群
hanhyojoo1992 发表于 2018-5-29 15:43
你要的不是类似这样的结构吗:
{0: {'1': '0.3701',
  '10': '0.1228',
我想要的是输出的时候既能不混淆行,又能将dict的所有key作为列(3000多个),在附件里的第二张sheet就是期望格式

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 09:57