2017-09-20 71 views
4

我有一個.csv文件,其中一列名爲Trigger,另外兩列名爲void1void2將.csv文件中的值讀入列表字典

的數據是這樣的:

Trigger;void1;void 
good;not good;not to good; 

我想用這個數據來創建一個字典,看起來像這樣:

dictionary ={"good":["not good", "not to good"]} 

我用下面的代碼開始:

df = pd.read_csv('dictionary.csv', sep =";") 

for index, row in df.iterrows(): 
    dictionary[row['trigger']] = row['void1'] 

哪個有效。但是,當我嘗試:

df = pd.read_csv('dictionary.csv', sep =";") 

for index, row in df.iterrows(): 
    dictionary[row['trigger']] = row['void1', 'void2'] 

它不起作用。任何想法如何我可以得到我期待的輸出?

+0

'dictionary [row ['trigger']] = [row ['void1'],row ['void2']]''? –

回答

0

請訪問只有一個從row在時間欄:

for index,row in df.iterrows(): 
    dictionary[row['trigger']] = [row['void1'], row['void2']] 
2

假設numpy的工作原理是標準的Python列表,你需要改變這一行:

dictionary[row['trigger']] = row['void1', 'void2'] 

要:

dictionary[row['trigger']] = [row['void1'], row['void2']] 

另外,假設您的CSV文件實際上看起來像這樣:

Trigger;void1;void2 
    good;not good;not to good; 

,而不是這樣的:

Trigger;void1;void 
    good;not good;not to good; 

還注意到自己的第一個例子中不保存條目,你想它。您正在將字符串存儲爲字典值而不是數組。

0

在熊貓中,您可以在索引運算符([])內有一個列表,以便選擇所需的列。你幾乎沒有與row['void1', 'void2']語法,你只需要括號中的第二組:

dictionary[row['trigger']] = row[['void1', 'void2']].tolist() 

你再調用tolist因爲row[['void1', 'void2']]將返回一系列對象,而不是一個簡單的列表。