次のパンダデータフレームがあるとしましょう。
+---------------------+---------+-------+-----+
| observed_cats_count | year | month | day |
+---------------------+---------+-------+-----+
| 2 | 2019 | 10 | 19 |
| 3 | 2019 | 10 | 18 |
| 5 | 2019 | 10 | 16 |
+---------------------+---------+-------+-----+
そして、2つの境界の日付、say2019-10-15
と、、そして2019-10-20
私はすべての欠落している観測値にが必要であることを知っていobserved_cats_count=0
ます。
間隔内の欠落しているすべての日付の行を挿入して、次のデータフレームを取得するにはどうすればよいですか。
+---------------------+---------+-------+-----+
| observed_cats_count | year | month | day |
+---------------------+---------+-------+-----+
| 0 | 2019 | 10 | 20 |
| 2 | 2019 | 10 | 19 |
| 3 | 2019 | 10 | 18 |
| 0 | 2019 | 10 | 17 |
| 5 | 2019 | 10 | 16 |
| 0 | 2019 | 10 | 15 |
+---------------------+---------+-------+-----+
アイデアはwithで作成DatetimeIndex
されるため、によって作成されたすべての日時で使用できる可能性があります。次に、から列を作成し、並べ替えて、最後にwithで削除します。to_datetime
DataFrame.set_index
Series.reindex
date_range
DatetimeIndex
DataFrame.sort_index
DataFrame.reset_index
drop=True
rng = pd.date_range('2019-10-15','2019-10-20')
df = (df.set_index(pd.to_datetime(df[['year','month','day']]))['observed_cats_count']
.reindex(rng, fill_value=0).to_frame()
.assign(year=lambda x: x.index.year,
month=lambda x: x.index.month,
day=lambda x: x.index.day)
.sort_index(ascending=False)
.reset_index(drop=True))
print (df)
observed_cats_count year month day
0 0 2019 10 20
1 2 2019 10 19
2 3 2019 10 18
3 0 2019 10 17
4 5 2019 10 16
5 0 2019 10 15
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加