[英]Python pandas time delta to timestamp
我從 Excel 文件中導入了 dataframe。 該文件包含以分鍾為單位的速度和持續時間表。 我的最終目標是將其轉換為 dataframe,時間步長為 1 秒。 應該為每個時間步重復速度。 這是為了導入另一個工具。
我很難理解從哪里開始。 我能找到的唯一可行的方法是遍歷每一行以計算時間戳並附加到新的 dataframe。 這似乎真的很低效。
有人可以在這里指導我嗎?
示例輸入如下。
速度 | 時間 | |
---|---|---|
0 | 5 | 0.75 |
1 | 6 | 3.12 |
2 | 14 | 5.10 |
3 | 38 | 19.11 |
4 | 7 | 4.32 |
5 | 5 | 1.50 |
6 | 3 | 11.10 |
7 | 3 | 1.50 |
8 | 9 | 3.60 |
9 | 3 | 19.11 |
10 | 38 | 5.10 |
11 | 5 | 3.12 |
12 | 4 | 0.75 |
樣品 output
時間戳 | 速度 | |
---|---|---|
0 | 00:00:00 | 5 |
1 | 00:00:01 | 5 |
... | ... | ... |
45 | 00:00:45 | 6 |
46 | 00:00:46 | 6 |
47 | 00:00:47 | 6 |
.. | .. | .. |
您可以從持續時間列的累積總和創建日期時間索引,然后重新索引到 1 秒的頻率。 重新索引時,使用method="bfill"
向后填充現有值。 前任:
import pandas as pd
df = pd.DataFrame({"speed": [5,6,14],
"time": [0.75,3.12,5.10]})
# arbitrary date as reference
refdate = pd.Timestamp("2022-01-01")
df.index = refdate + pd.to_timedelta(df["time"].cumsum(), unit="min").dt.floor("s")
df = df.reindex(
pd.date_range(refdate, df.index.max(), freq='1s'),
method="bfill"
)
df[df.index > "2022-01-01 00:00:43"]
Out[62]:
speed time
2022-01-01 00:00:44 5 0.75
2022-01-01 00:00:45 5 0.75
2022-01-01 00:00:46 6 3.12
2022-01-01 00:00:47 6 3.12
2022-01-01 00:00:48 6 3.12
... ...
2022-01-01 00:08:54 14 5.10
2022-01-01 00:08:55 14 5.10
2022-01-01 00:08:56 14 5.10
2022-01-01 00:08:57 14 5.10
2022-01-01 00:08:58 14 5.10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.