所以我有一个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]]}
对每个键都做个“如果”,但我不认为这两种方法都有效。在
对于当前方法,您可能需要一个defaultdict。这是一个类似字典的对象,如果键不存在,则提供默认值。因此,在您的例子中,我们将其设置为一个列表,然后对于我们循环的每一行,我们将列0和列1中的值作为元组添加到此列表中,如下所示:
在提供的示例中,这将打印带有以下条目的
^{pr2}$defaultdict
:我不是超级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的文档相关问题 更多 >
编程相关推荐