Python 从csv文件中的行提取信息
我正在使用一个csv文件,该文件在一列中有一个ID号,我已将其保存在字典中,如下所示: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')
身份证号码 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()