使用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的新手。
答案 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')