簡體   English   中英

如何使用python解析csv中的特定列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM