【发布时间】:2022-01-16 17:43:25
【问题描述】:
在这个 pandas 数据框的时间列中,我正在尝试用缺失的时间值填充 NaN 值。
ticker date time vol vwap open high low close lbh lah trades
0 AACG 2022-01-06 09:30:00 33042.0 1.8807 1.8900 1.9200 1.8700 1.9017 0.0 0.0 68.0
1 AACG 2022-01-06 09:31:00 5306.0 1.9073 1.9100 1.9200 1.8801 1.9100 0.0 0.0 27.0
2 AACG 2022-01-06 09:32:00 3496.0 1.8964 1.9100 1.9193 1.8800 1.8900 0.0 0.0 17.0
3 AACG 2022-01-06 09:33:00 5897.0 1.9377 1.8900 1.9500 1.8900 1.9500 0.0 0.0 15.0
4 AACG 2022-01-06 09:34:00 1983.0 1.9362 1.9200 1.9499 1.9200 1.9200 0.0 0.0 9.0
5 AACG 2022-01-06 09:35:00 10725.0 1.9439 1.9400 1.9600 1.9201 1.9306 0.0 0.0 87.0
6 AACG 2022-01-06 09:36:00 5942.0 1.9380 1.9307 1.9400 1.9300 1.9400 0.0 0.0 48.0
7 AACG 2022-01-06 09:37:00 5759.0 1.9428 1.9659 1.9659 1.9400 1.9500 0.0 0.0 11.0
8 AACG 2022-01-06 09:38:00 4855.0 1.9424 1.9500 1.9500 1.9401 1.9495 0.0 0.0 10.0
9 AACG 2022-01-06 09:39:00 6275.0 1.9514 1.9500 1.9700 1.9450 1.9700 0.0 0.0 14.0
10 AACG 2022-01-06 09:40:00 13695.0 2.0150 1.9799 2.0500 1.9749 2.0200 0.0 0.0 59.0
11 AACG 2022-01-06 09:41:00 3252.0 2.0209 2.0275 2.0300 2.0200 2.0200 0.0 0.0 14.0
12 AACG 2022-01-06 09:42:00 12082.0 2.0117 2.0300 2.0400 1.9800 1.9900 0.0 0.0 41.0
13 AACG 2022-01-06 09:43:00 5148.0 1.9802 1.9800 1.9999 1.9750 1.9999 0.0 0.0 11.0
14 AACG 2022-01-06 09:44:00 276.0 1.9927 1.9901 1.9943 1.9901 1.9943 0.0 0.0 5.0
15 AACG 2022-01-06 09:45:00 2379.0 1.9576 1.9601 1.9601 1.9201 1.9201 0.0 0.0 10.0
16 AACG 2022-01-06 09:46:00 8762.0 1.9852 1.9550 1.9900 1.9550 1.9900 0.0 0.0 35.0
17 AACG 2022-01-06 09:47:00 1343.0 1.9704 1.9700 1.9738 1.9700 1.9701 0.0 0.0 5.0
18 AACG 2022-01-06 09:48:00 17080.0 1.9696 1.9700 1.9800 1.9600 1.9600 0.0 0.0 9.0
19 AACG 2022-01-06 09:49:00 9004.0 1.9600 1.9600 1.9600 1.9600 1.9600 0.0 0.0 9.0
20 AACG 2022-01-06 09:50:00 922.0 1.9603 1.9600 1.9613 1.9600 1.9613 0.0 0.0 4.0
21 AACG 2022-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
22 AACG 2022-01-06 09:52:00 16914.0 1.9921 1.9800 2.0400 1.9750 2.0399 0.0 0.0 67.0
23 AACG 2022-01-06 09:53:00 4665.0 1.9866 1.9900 2.0395 1.9801 1.9900 0.0 0.0 37.0
24 AACG 2022-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
我已尝试将时间列转换为“timedelta64[m]”值,然后遍历数据框以生成缺失值,但我无法将 timedelta 重新转换回常规时间格式。
我尝试简单地将时间值加到 NaN 值之上,但 DataFrames 似乎不允许算术。
我认为循环将是关键......但我将如何插入缺失值? 这是我目前所拥有的:
h = 9
m = 30
for t in dftime:
if t == datetime.time(h, m):
dftime.insert(t, datetime.time(h, m))
# print('its a match ', t)
h = h + 0
m = m + 1
if m == 60:
h = h + 1
m = 00
# print('stop ops! moving on from ', t)
continue
else:
print('Woh! ', datetime.time(h, m))
dftime.insert(t, datetime.time(h, m))
h = h + 0
m = m + 1
if m == 60:
h = h + 1
m = 00
# print('stop ops! moving on from ', t)
continue
如果您运行此循环,您将看到它成功识别了空值。但是如何将正确的时间值插入空白空间?我想插入 datetime.time(h, m)。
我创建了下面的代码,因此您可以查看我正在查看的相同数据:
timelist = [datetime.time(9, 30),
datetime.time(9, 31),
datetime.time(9, 32),
datetime.time(9, 33),
datetime.time(9, 34),
datetime.time(9, 35),
datetime.time(9, 36),
datetime.time(9, 37),
datetime.time(9, 38),
datetime.time(9, 39),
datetime.time(9, 40),
datetime.time(9, 41),
datetime.time(9, 42),
datetime.time(9, 43),
datetime.time(9, 44),
datetime.time(9, 45),
datetime.time(9, 46),
datetime.time(9, 47),
datetime.time(9, 48),
datetime.time(9, 49),
datetime.time(9, 50),
"nan (This is a string because I couldn't create an actual NaN value)",
datetime.time(9, 52),
datetime.time(9, 53),
"nan (This is a string because I couldn't create an actual NaN value)",
datetime.time(9, 55),
datetime.time(9, 56),
datetime.time(9, 57),
datetime.time(9, 58),
datetime.time(9, 59),
datetime.time(10, 0)]
dftime = pd.Series(data = timelist, name = "time")
dftime
【问题讨论】:
标签: python loops datetime timedelta