楼主: 普鸭梨山大
2386 14

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

  • 1关注
  • 0粉丝

已卖:1份资源

本科生

89%

还不是VIP/贵宾

-

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

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


捕获.PNG (62.33 KB)

捕获.PNG

01.xlsx
下载链接: https://bbs.pinggu.org/a-2479318.html

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
拉您进交流群
GMT+8, 2026-1-7 13:00