【发布时间】:2020-04-07 00:51:26
【问题描述】:
出于 stackoverflow 的目的,我将为value1 和value2 制作一些每天 2 年的时间序列数据。
import numpy as np
import pandas as pd
np.random.seed(11)
rows,cols = 730,2
data = np.random.rand(rows,cols)
tidx = pd.date_range('2017-11-15', periods=rows, freq='D')
df = pd.DataFrame(data, columns=['value1','value2'], index=tidx)
下面的这个嵌套字典是我用手指捏在一起的东西,我试图在这些日期范围之间对值 1 和 2 求和。我的真实世界示例(水电费)恰好在每个月的 15 日开始到 14 日结束,但这几乎总是因账户而异。嵌套字典名称等于嵌套字典中列出的第二个日期。 (希望这是有道理的)
dates = {
'dec17' : {'11-15-2017' : '12-14-2017'},
'jan18' : {'12-15-2017' : '01-14-2018'},
'feb18' : {'01-15-2018' : '02-14-2018'},
'mar18' : {'02-15-2018' : '03-14-2018'},
'apr18' : {'03-15-2018' : '04-14-2018'},
'may18' : {'04-15-2018' : '05-14-2018'},
'jun18' : {'05-15-2018' : '06-14-2017'},
'jul18' : {'06-15-2018' : '07-14-2018'},
'aug18' : {'07-15-2018' : '08-14-2018'},
'sep18' : {'08-15-2018' : '09-14-2018'},
'oct18' : {'09-15-2018' : '10-14-2018'},
'nov18' : {'10-15-2018' : '11-14-2018'},
'dec18' : {'11-15-2018' : '12-14-2018'},
'jan19' : {'12-15-2018' : '01-14-2019'},
'feb19' : {'01-15-2019' : '02-14-2019'},
'mar19' : {'02-15-2019' : '03-14-2019'},
'apr19' : {'03-15-2019' : '04-14-2019'},
'may19' : {'04-15-2019' : '05-14-2019'},
'jun19' : {'05-15-2019' : '06-14-2019'},
'jul19' : {'06-15-2019' : '07-14-2019'},
'aug19' : {'07-15-2019' : '08-14-2019'},
'sep19' : {'08-15-2019' : '09-14-2019'},
'oct19' : {'09-15-2019' : '10-14-2019'},
'nov19' : {'10-15-2019' : '11-14-2019'}
}
如何将这些汇总值放入 pandas 数据框中,其中行名 == 汇总数据的嵌套字典名称?我不确定使用嵌套字典是否是正确的路径。任何提示都非常感谢您提供更好的解决疯狂的方法。
def myprint(d):
for k, v in d.items():
if isinstance(v, dict):
myprint(v)
else:
print("{0} : {1}".format(k, v))
编辑
在我的真实世界示例中,我可以在下面总结一个日期范围,但我希望创建某种循环/自动化过程......
weath.loc['11-15-2017' : '12-14-2017'].sum()
【问题讨论】:
-
请注意,您的字典中有重复的键,它将替换现有的键
-
哎呀,这行不通
-
另外请添加预期输出
-
我进行了编辑。
-
我建议您简化示例,并添加预期的输出。目前似乎还不清楚