我正在嘗試從 csv 制作日期時間串列,以將我的結果與檢測到的 LSTM 測驗相匹配。
每當我使用回圈來提取日期時間和值時,我總是會得到帶有日期時間的非字串單詞“時間戳”。
我的代碼在這里:
m = [ 49, 50] #index of results which I have to match with datetime to extract all information
result_details = []
for index, rows in df.iterrows():
if index in m:
result_details.append([rows[0],
rows[1]])
print(result_details)
我的csv:
datetimeAt value
0 2021-12-01 00:00:00 0.000
5 2021-12-01 01:00:00 0.000
10 2021-12-01 02:00:00 0.000
15 2021-12-01 03:00:00 0.000
20 2021-12-01 04:00:00 0.000
... ... ...
1149 2021-12-10 13:00:00 2.756
1154 2021-12-10 14:00:00 1.297
1159 2021-12-10 15:00:00 1.503
1164 2021-12-10 16:00:00 1.417
1169 2021-12-10 17:00:00 0.084
每當我追加時,我都會這樣說:
[[Timestamp('2021-12-01 10:00:00'), 13.266044921875],
[Timestamp('2021-12-01 09:00:00'), 9.5365595703125]]
我如何獲得如下輸出?(只有日期和值,沒有元組、字串和單詞)
[2021-12-01 10:00:00, 13.266044921875],
[2021-12-01 09:00:00, 9.5365595703125]]
uj5u.com熱心網友回復:
因為 'datetimeAt' 列作為timestamp資料型別。您可以將型別轉換為字串,然后它就會起作用,如下所示:
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
m = [49, 50, 60] #index of results which I have to match with datetime to extract all information
date_today = datetime.now()
days = pd.date_range(date_today, date_today timedelta(7), freq='h')
data = np.random.random(size=len(days))
df = pd.DataFrame({'datetimeAt': days, 'value': data})
result_details = []
for index, rows in df.iterrows():
if index in m:
result_details.append([str(rows[0]),
rows[1]])
print(result_details)
注意:for loops在處理資料幀時應該盡可能避免,因為如果你有一個位表,那么它會變慢。相反,您可以使用非常有效的矢量化方法,例如:
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
m = [49, 50] #index of results which I have to match with datetime to extract all information
date_today = datetime.now()
days = pd.date_range(date_today, date_today timedelta(7), freq='h')
data = np.random.random(size=len(days))
df = pd.DataFrame({'datetimeAt': days, 'value': data})
df['datetimeAt'] = df['datetimeAt'].astype(str)
result_details = df.loc[m,:].values.tolist()
print(result_details)
輸出:
[['2021-12-18 07:11:58.086250', 0.3699851325750202],
['2021-12-18 08:11:58.086250', 0.6787871001450321]]
編輯:用
pandas 1.3.5
pandas 0.23.4
python 3.7 & 3.9
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385653.html
上一篇:將資料幀從時間戳轉換為時間間隔
