[英]How to parse specific columns in a csv with python
我想將這些數據轉換成字典,但是我想將“名稱”列作為關鍵字,而僅將年齡和身高作為與該名稱相關聯的值,而其他所有內容都不相關。
CSV文件的排列方式如下: 年齡| 顏色| 高度 重量史蒂芬| 15 | 紅色| 70 | 此行下還有 150個其他具有特征的名稱
我是解析CSV文件的新手,似乎無法找到我想要做的事情的框架。 有沒有地方可以放置列索引?
with open("search_rez.csv","w+", encoding="utf-8") as out:
out.write(final_data)
out.close
with open('search_rez.csv', 'r') as fh:
rd = csv.DictReader(fh, delimiter=',')
for row in rd:
print(row)
我可以訪問並將其存儲在變量中的鍵(名稱)和值(許多特征)的字典。 最終,我希望能夠使用給定的“名稱”搜索字典並返回與之關聯的值。
我創建了一個虛擬的csv文件:
import pandas as pd
import csv
test_data = {'name': ['sansa', 'bran', 'aria'], 'sex': ['F','M','F'], 'age': [15,10,12]}
test_data = pd.DataFrame(test_data)
test_data.to_csv("search_rez.csv", index=False)
該文件如下所示:
data = pd.read_csv("search_rez.csv")
print(data)
name sex age
0 sansa F 15
1 bran M 10
2 aria F 12
我已經修改了您的代碼以實現所需的輸出(據我了解):
my_dict = {}
with open('search_rez.csv', 'r') as fh:
rd = csv.DictReader(fh, delimiter=',')
for row in rd:
new_key = row['name']
new_values = (row['sex'], row['age'])
my_dict[new_key] = new_values
這使:
print(my_dict)
{'sansa': ('F', '15'), 'bran': ('M', '10'), 'aria': ('F', '12')}
這個問題很模糊,但我認為您正在尋找這樣的東西:
df = pd.read_csv("your file here")
your_map = dict(
df.set_index('name')
.groupby(level=0)
.apply(lambda x: x.to_dict(orient='records'))
)
您可以嘗試以下方法:
import csv
with open('search_rez.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # Skip header
my_dict = {rows[0]: rows[1:] for rows in reader}
輸入示例:
name,D,Q,L
nikos,1,,5
maria,7,'xa',4
並將輸出存儲在my_dict
:
{'nikos': ['1', '', '5'], 'maria': ['7', "'xa'", '4']}
像這樣嗎
>>> import csv
>>> with open("search_rez.csv", newline='') as csvfile:
... reader = csv.DictReader(csvfile)
... for row in reader:
... if row['name'] == 'some_name':
... print(row['columnD'], row['columnQ'])
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.