将.csv文件中的值读入列表字典

时间:2017-09-20 14:39:40

标签: python pandas dataframe

我有一个.csv文件,其中一列名为Trigger,另外两列名为void1void2

数据如下所示:

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']

它不起作用。我有什么想法可以得到我想要的输出?

3 个答案:

答案 0 :(得分: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;

另请注意,您的第一个示例并未按照您的意愿保存条目。您将String存储为字典值而不是数组。

答案 1 :(得分:0)

请一次只能访问row中的一列:

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

答案 2 :(得分:0)

在pandas中,您可以在索引运算符([])中包含一个列表,以便选择所需的列。您几乎使用row['void1', 'void2']语法,只需要第二组括号:

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

然后调用tolist,因为row[['void1', 'void2']]将返回一个Series对象而不是一个普通列表。