CSV到Python字典,一个键有多个列表

2024-09-27 07:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个csv文件的格式是这样的

data_a,dataA,data1,data11
data_b,dataB,data1,data12
data_c,dataC,data1,data13
 , , ,
data_d,dataD,data2,data21
data_e,dataE,data2,data22
data_f,dataF,data2,data23
HEADER1,HEADER2,HEADER3,HEADER4

列标题在底部,我希望第三列作为键。您可以看到,第三列对于两个数据块中的每一个都是相同的值,并且这些数据块由空值分隔,因此我希望将3行值存储到这个1键中,同时忽略某些列(如第4列)。这是我现在的密码

^{pr2}$

我基本上想要的是当我打电话的时候

print(myDict['data2'])

我明白了

{[data_d,dataD][data_e,dataE][data_f,dataF]}

我试着把我的if循环编辑成

if row[2] == 'data2':
    myDict = {'data2':[row[0],row[1]]}

对每个键都做个“如果”,但我不认为这两种方法都有效。在


Tags: 文件csv数据dataif格式mydictrow
2条回答

对于当前方法,您可能需要一个defaultdict。这是一个类似字典的对象,如果键不存在,则提供默认值。因此,在您的例子中,我们将其设置为一个列表,然后对于我们循环的每一行,我们将列0和列1中的值作为元组添加到此列表中,如下所示:

import csv
from collections import defaultdict

data = defaultdict(list)

with open("example.csv") as f:
    readCSV = csv.reader(f)

    for row in readCSV:
        # disregard separating rows
        if row[2] != '':
            data[row[2]].append((row[0], row[1]))

print(data)

在提供的示例中,这将打印带有以下条目的defaultdict

^{pr2}$

我不是超级Python极客,但我建议使用pandas(import pandas as pd)。所以您使用pd.read_csv(file, header)加载数据。使用header可以指定要作为头的行,这样就可以更容易地操作数据集(例如,删除变量(del df['column_name'])、创建字典等)。在

以下是pd.read_csv:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html的文档

相关问题 更多 >

    热门问题