如何在python中填充丢失的时隙?

时间:2019-03-28 10:02:06

标签: python pandas deep-learning

我正在尝试将日期和时间作为字符串的CSV文件中缺少的位置。

我从一个csv文件中输入的是:

A               B               C

56  2017-10-26 22:15:00     89
2   2017-10-27 00:30:00     54
20  2017-10-28 05:00:00     64
24  2017-10-29 06:00:00     2
91  2017-11-01 22:45:00     78
62  2017-11-02 15:30:00     99
91  2017-11-02 22:45:00     34

输出应为

A               B               C
0   2017-10-26 00:00:00     89
1   2017-10-26 00:15:00     89
.
.
.
.
.
56  2017-10-26 22:15:00     89
..
.
.
.
.
96    2017-10-26 23:45:00   89
0   2017-10-27 00:00:00     54
1   2017-10-27 00:15:00     54
2   2017-10-27 00:30:00     54
.
.
.
20  2017-10-28 05:00:00     64
21  2017-10-28 05:15:00     64
.
.
.
.

24  2017-10-29 06:00:00     2
.
91  2017-11-01 22:45:00     78
.
62  2017-11-02 15:30:00     99
.
91  2017-11-02 22:45:00     34

输出范围是2017年10月26日至2017年11月2日之间的15分钟时隙,每天有96个时隙。 和上面一样。

3 个答案:

答案 0 :(得分:2)

发现要旋转的数据,然后使用ffillbfill

填充数据
column_data =columns.ffill(axis=1).bfill(axis=1)

希望这行得通

答案 1 :(得分:1)

使用resample间隔15分钟,使用bfill填充B中的缺失值:

df = df.set_index(pd.to_datetime(df.pop('B')))
df.loc[df.index.min().normalize()] = None
df = df.resample('15min').max().bfill()

df['A'] = 4*df.index.hour + df.index.minute//15

print(df)

输出:

                      A     C
B                            
2017-10-26 00:00:00   0  89.0
2017-10-26 00:15:00   1  89.0
2017-10-26 00:30:00   2  89.0
...                  ..   ...
2017-11-02 22:15:00  89  34.0
2017-11-02 22:30:00  90  34.0
2017-11-02 22:45:00  91  34.0

答案 2 :(得分:0)

您需要通过传播每个日期的最后一个已知值来重新采样数据并填充缺失值。熊猫可能会这样做。假设您将csv加载到了pandas中(使用pandas.read_csv),并获得了一个数据框(我们将其称为df),其中日期列是您的索引(df.set_index('B')),然后: >

df.resample(rule='15M').ffill()

rule参数定义了新的频率,对.ffill()的调用意味着“转发填充”,即用先前的数据替换丢失的数据。