【发布时间】:2020-06-12 01:39:24
【问题描述】:
我有几天完全为零,想用前一天的值替换它们,如下所示。
输入
count
2020-02-01 00:00:00 12
2020-02-01 00:01:00 3
2020-02-01 00:02:00 14
2020-02-01 00:03:00 0
2020-02-01 00:04:00 22
2020-02-02 00:00:00 0
2020-02-02 00:01:00 0
2020-02-02 00:02:00 0
2020-02-02 00:03:00 0
2020-02-02 00:04:00 0
2020-02-03 00:00:00 2
2020-02-03 00:01:00 4
2020-02-03 00:02:00 1
2020-02-03 00:03:00 0
2020-02-03 00:04:00 22
输出
count
2020-02-01 00:00:00 12
2020-02-01 00:01:00 3
2020-02-01 00:02:00 14
2020-02-01 00:03:00 0
2020-02-01 00:04:00 22
2020-02-02 00:00:00 12
2020-02-02 00:01:00 3
2020-02-02 00:02:00 14
2020-02-02 00:03:00 0
2020-02-02 00:04:00 22
2020-02-03 00:00:00 2
2020-02-03 00:01:00 4
2020-02-03 00:02:00 1
2020-02-03 00:03:00 0
2020-02-03 00:04:00 22
我正在尝试这样的事情,但无法解决。
df = df.fillna(0)
df = df.reset_index()
df['Date'] = df['index'].dt.date
df['Time'] = df['index'].dt.time
df.set_index(pd.to_datetime(df.Date + ' ' + df.Time), inplace=True)
for ind in df[df.count.eq(0)].index:
df.loc[ind, 'count'] = df.loc[ind - pd.Timedelta('1D'), 'count']
df.reset_index(drop=True, inplace=True)
【问题讨论】:
-
查看
ffill和bfill,它们应该用前一个值或下一个值填充缺失值。 -
他们不考虑天数。它们只是填充以前或以后时间的值。
-
您只想在当天全为 0 时填写?或者例如,如果您在第一天的小时 = 3 中有 1 而不是 0,那么您是否也会用 1 填充第 3 天的第 3 小时?
-
好问题!我可以同时选择吗?