首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于某些原因,For不能正常工作。

由于某些原因,For不能正常工作。
EN

Stack Overflow用户
提问于 2021-03-09 13:23:11
回答 1查看 44关注 0票数 0

如何输出到Pandas中的dict类型

我刚才问了一个问题,我发现了一些问题的原因,但我不知道如何解决,所以我问。

这就是最初显示的数据。

代码语言:javascript
复制
"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
},

以前的数据被划分为日期和数据部分,缺失的部分被修复。

代码语言:javascript
复制
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

代码语言:javascript
复制
"report": [
            999,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            ......
]

s.index

代码语言:javascript
复制
"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",
            .....
]
代码语言:javascript
复制
test = {s.index[i]: s[i] for i in range(len(s))}

我希望这个结果在状态集上是这样的

代码语言:javascript
复制
"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”的错误是由ss.index的数量不同引起的。这是正确的吗?这是正确的吗?另外,我如何改进它呢?

对不起,我是初学者,但如果你能告诉我,我会很感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 13:43:22

如果我的理解是正确的,你想从你的系列中得到一本字典。嗯,这个迪克()有一个函数

代码语言:javascript
复制
test = s.to_dict()

如果您真的想遍历这个系列,那么我将使用枚举()而不是range(len(s))

代码语言:javascript
复制
test = {s.index[i]:v for i, v in enumerate(s)}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66547739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档