在CSV中查找字典键匹配并将值写入下一列

时间:2017-05-02 16:44:26

标签: python python-2.7

使用Python 2.7。

我每天早上运行一个函数,创建一个带有键和值的输出字典。输出字典结果如下所示:

'约翰':1 '杰克':5
'露西':235
'莎拉':33

然后我打开一个现有的csv文件,其列/行看起来像这样:

名称1/1/17 1/2/17
约翰福音5 88 杰克31 34 Sarah 45 12
露西77 57

其中A列标题始终为Name,每个连续列标题为列中数据的日期。

我正在尝试编写一个函数:

打开csv, 写信给csv 将日期追加到下一个可用的列标题(即第1行) 然后 在csv中找到与我的词典中的Key匹配的Key 将字典中的值附加到csv

中的下一个打开列

使用上面的例子,然后
名称1/1/17 1/2/17
约翰福音5 88 杰克31 34 Sarah 45 12
露西77 57

变成

名称1/1/17 1/2/17 1/3/17
约翰5 88 1 杰克31 34 5
莎拉45 12 33
露西77 57 235

我已经非常接近我想要使用以下代码做的事情:

import pandas as pd
import datetime


starter_df = pd.read_csv('keyword_results.csv', names = ['Keyword'])

#dictionary created by function
test_dic = {"John": 12, "Jake": 45, "Sarah": 31, "Lucy": 18}

now = datetime.datetime.now()

str_date = now.strftime("%m %d %Y")

starter_df[str_date] = starter_df["Keyword"].map(test_dic)

starter_df.to_csv('keyword_results.csv')

我正在将csv读入数据帧,尝试将新列映射到数据帧,然后将数据帧输出到csv。

问题是,这是将日期写入新列,但下面没有数据。

我感到茫然,谢谢你的帮助。我还是Python的新手。

1 个答案:

答案 0 :(得分:1)

你可以用lambda做到这一点,它简单快捷。也无需添加参数" names = [' Keyword']"在阅读csv时。

import pandas as pd
import datetime
import os 
os.chdir('D:/mypc/')

starter_df = pd.read_csv('keyword_results.csv')

#dictionary created by function
test_dic = {"John": 12, "Jake": 45, "Sarah": 31, "Lucy": 18}

now = datetime.datetime.now()
str_date = now.strftime("%m/%d/%Y")

starter_df[str_date] = starter_df["Name"].map(lambda x : test_dic[x])

starter_df.to_csv('keyword_results.csv')