我刚才问了一个问题,我发现了一些问题的原因,但我不知道如何解决,所以我问。
这就是最初显示的数据。
"report": {
"2020-3-27": 999,
"2021-2-18": 1221,
"2021-2-22": 1201,
"2021-3-2": 1004,
"2021-3-3": 491,
"2021-3-5": 168
},以前的数据被划分为日期和数据部分,缺失的部分被修复。
mappedData = {
f"{record['created_at__year']}-{record['created_at__month']}-{record['created_at__day']}":
record['time__sum']
for record in data
}
s = pd.Series(mappedData)
idx = pd.date_range(s.index.min(), s.index.max())
s.index = pd.DatetimeIndex(s.index)
s = s.reindex(idx, fill_value=0)s
"report": [
999,
0,
0,
0,
0,
0,
0,
0,
0,
......
]s.index
"report": [
"2020-03-27T00:00:00",
"2020-03-28T00:00:00",
"2020-03-29T00:00:00",
"2020-03-30T00:00:00",
"2020-03-31T00:00:00",
"2020-04-01T00:00:00",
"2020-04-02T00:00:00",
"2020-04-03T00:00:00",
.....
]test = {s.index[i]: s[i] for i in range(len(s))}我希望这个结果在状态集上是这样的
"report": [
"2020-03-27T00:00:00":999,
"2020-03-28T00:00:00":0,
"2020-03-29T00:00:00":0,
"2020-03-30T00:00:00":0,
"2020-03-31T00:00:00":0,
"2020-04-01T00:00:00":0,
"2020-04-02T00:00:00":0,
"2020-04-03T00:00:00":0,
.....
]如果您运行前面的代码,您将得到错误消息“键必须是str、int、float、bool或None,而不是int64”。
如果我用test = {s[i] for i in range(len(s))}或test = {s.index[i] for i in range(len(s))}尝试它,它就能工作,但是如果我用test = {s[i] for i in range(len(s))}尝试它,它就不起作用了。修复第一次丢失数据的结果未得到反映,并返回以下数据。
我认为“键必须是str、int、浮起、bool或空,而不是int64”的错误是由s和s.index的数量不同引起的。这是正确的吗?这是正确的吗?另外,我如何改进它呢?
对不起,我是初学者,但如果你能告诉我,我会很感激的。
https://stackoverflow.com/questions/66547739
复制相似问题