Python 从csv文件中的行提取信息

Python 从csv文件中的行提取信息,python,pandas,csv,Python,Pandas,Csv,我正在使用一个csv文件,该文件在一列中有一个ID号,我已将其保存在字典中,如下所示: 身份证号码 11 1 2 13 2 4 2.5 36 ID_rounds={1:[],2:[],3:[]} 然后,我希望代码遍历csv文件中的每一行,对于每一行,将整数添加到字典中的正确列表中 因此,最终结果如下所示: ID_rounds={1:{1,2,3],2:[4,5],3:[6]}将您的数据导入一个列表,只需在列表上迭代,每次迭代分配dict键和值 with open('tt.csv', 'r')

我正在使用一个csv文件,该文件在一列中有一个ID号,我已将其保存在字典中,如下所示:


身份证号码

11

1 2

13

2 4

2.5

36


ID_rounds={1:[],2:[],3:[]}

然后,我希望代码遍历csv文件中的每一行,对于每一行,将整数添加到字典中的正确列表中

因此,最终结果如下所示:
ID_rounds={1:{1,2,3],2:[4,5],3:[6]}

将您的数据导入一个列表,只需在列表上迭代,每次迭代分配dict
键和

with open('tt.csv', 'r') as file:
  headers = file.readline()
  data = [row.strip().split(',') for row in file.readlines()]    

d = {}

for key, value in data:
  if key in d.keys():
    d[key].append(value)
  else:
    d[key] = [value]
输出:

d
{'1': ['1', '2', '3'], '2': ['4', '5'], '3': ['6']}

您还可以使用
defaultdict
(来自
集合
模块)来执行以下操作:

from io import StringIO
from collections import defaultdict

data = '''ID Round
1 1
1 2
1 3
2 4
2 5
3 6
'''

# initialize default dict (each dict value is an empty list)
dd = defaultdict(list)

lines = StringIO(data)

# skip header
_ = next(lines)

# process body
for line in lines:
    key, value = line.rstrip('\n').split()
    key = int(key)
    value = int(value)
    dd[key].append(value)
    
# show results    
print(dict(dd))

{1: [1, 2, 3], 2: [4, 5], 3: [6]}
尝试:


有些人可能会编写
d.setdefault(key,[])。追加(value)
而不是4行
if
df = pd.read_csv('your_csv_file.csv', sep=' ')
result = df.groupby("ID").Round.apply(list).to_dict()