2017-02-27 59 views
0

我有一个创建一个数据帧的功能:保存功能数据帧值字典

def function(date): 
... 
return dataframe 

现在我希望把数据框的值与该键是日期和数据框为价值的字典:

d = {} 
d[date] = dataframe 

但是,每次我重新运行函数以添加新日期时,它都会添加新的日期和值,但它也会覆盖上一个日期的值。我究竟做错了什么?

谢谢!

+1

请给出[mcve]。根据你写的内容,不可能说*当前正在发生什么,更不用说为什么*。 – jonrsharpe

回答

0

如果按日期键入字典,它们必须是唯一的,以避免覆盖给定日期的现有值。

或者,你可以使用像这样的日期创建值列表:

d = {} 
try: 
    d[date].append(dataframe) 
except KeyError: 
    d[date] = [dataframe] 

这将使用Python的EAFP coding style尝试一个数据帧追加到dataframes列表给定日期。如果由于字典不包含日期键而引发异常,则会创建给定日期的键并为其分配单个项目列表值,稍后可将该值列入其中。

0

从给出的最小信息来看,我只能假设你将一个字典放在for循环中。例如,

df = pd.DataFrame([[1],[2]], columns = ['A']) 

for date in ['2017-02-27','2017-02-28']: 
    d = {} 
    d[date] = df 

这将返回一个字典,其中只包含'2017-02-28'的数据,因为词典正在覆盖for循环的每次迭代。