Pandasを用いて欠損値を穴埋めしたのですが、for文で{s[i]: s.index[i] for i in range(len(s))}
のようにするとkeys must be str, int, float, bool or None, not int64
とエラーが出てきてしまいます。
"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 },
もともとこのようなデータがあり、それぞれ日が開いてる部分を埋め、日が連続するようにし、欠損している部分の数値を0にずるため下記のようにして、実行しました。
s
は数値
s.index
は数値の日付を表しています。
{s.index[i] for i in range(len(s))}
のように日付単体でfor文を実行すると
"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", ..... ]
のように正常に表示されるのですが、
{s[i] for i in range(len(s))}
で数値のみで実行すると
report": [ 0, 1221, 999, 168, 491, 1004, 1201 ],
のように先程、欠損部分を穴埋めしたはずが、欠損分が穴埋めされていない状態で出てきてしまいます。
このような結果から{s[i]: s.index[i] for i in range(len(s))}
でエラーが出てしまうのは、s[i]とs.index[i]の個数が違うことが原因だと思うのですが、なぜ穴埋めしたはずの部分がリセットされているのでしょうか。
Python
1 s = pd.Series(mappedData) 2 idx = pd.date_range(s.index.min(), s.index.max()) 3 s.index = pd.DatetimeIndex(s.index) 4 s = s.reindex(idx, fill_value=0)
わかりにくい文章になってしまい申し訳ありませんが、教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。