在矩阵中存储日期时间以用于定义兴趣点(Python)

2024-06-28 16:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆CSV文件,其中包含与数据相对应的日期行,列标题使用pandas,我已经能够导入CSV文件。现在,我制作了一个CSV文件,它按日期时间标记感兴趣的点。我还用pandas导入了这个文件。我需要用时间矩阵来解析这些日期,并用时间来存储这些数据。当前,使用pd.to_日期时间我已经能够将csv中的字符串转换为datetime,但是我不知道如何存储它。这是我使用Python的第三天,所以我为这个新手的问题道歉。我是一个比较高级的Matlab用户。我将提供我的代码,但我不能提供有问题的数据,因为它不是我所有。谢谢各位!在

NUMBER_OF_CLASSES = 4
SUBSPACE_DIMENSION = 3
from datetime import datetime
import pandas as pd
import pandas_datareader.data as web 
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio 
PeriodList = pd.read_csv('IP_List.csv')
PeriodList = PeriodList.as_matrix()

# Pdata format:
# Pdata{hull, engine, 1}(:) - datetime array of hull and engine P data
# Pdata{hull, engine, 2}(:,:) - parametric data corrsponding to timestamps in datetime array 
# Pdata{hull, engine, 3}(:) - array of parametric channel labels 


Pdata_1 = pd.read_csv('LPD-17_1A.csv')
[list_m, list_n] = PeriodList.shape
Pdata_1 = Pdata_1.as_matrix()
startdatetime = []
enddatetime = []
#Up to line 27 done on MatLab script 
for d in range (0, list_m):
    Hull = PeriodList[d,0]
    Engine = PeriodList[d,1]
    startdatetime[d] = pd.to_datetime(PeriodList[d,2])
    enddatetime[d] =   pd.to_datetime(PeriodList[d,3])


#startdatetime = pd.to_datetime(PeriodList[d,2])

Tags: 文件csvto数据importpandasdatetimeas
2条回答

找到了一个解决方案:生成空字符串,然后循环存储每次迭代的值。因为它是空字符串,所以不会出现“cannot convert to float”错误。谢谢你的帮助@Bharath Shetty

代码:

PeriodList = pd.read_csv('IP_List.csv')
PeriodList = PeriodList.as_matrix()    
# Pdata format:
# Pdata{hull, engine, 1}(:) - datetime array of hull and engine P data
# Pdata{hull, engine, 2}(:,:) - parametric data corrsponding to timestamps in datetime array 
# Pdata{hull, engine, 3}(:) - array of parametric channel labels 


Pdata_1 = pd.read_csv('LPD-17_1A.csv')
[list_m, list_n] = PeriodList.shape
#Pdata_1 = Pdata_1.as_matrix()
startdatetime = ['' for x in range(list_m)]
enddatetime = ['' for x in range(list_m)]
#Up to line 27 done on MatLab script 
for d in range (0, list_m):
    Hull = PeriodList[d,0]
    Engine = PeriodList[d,1]
    startdatetime[d] = pd.to_datetime(PeriodList[d,2])
    enddatetime[d] =   pd.to_datetime(PeriodList[d,3])


#startdatetime = pd.to_datetime(PeriodList[d,2])

无需迭代数据帧,您可以将开始日期和结束日期存储在新的数据帧中,并将列转换为时间序列,然后可以通过iloc方法访问数据:

dates = PeriodList[['START','END']]
dates['START'] =  pd.to_datetime(dates['START'])
dates['END'] =  pd.to_datetime(dates['END'])
# You can access the dates based on index using iloc
dates.iloc[3]
#If you Start date you can use the column name
dates.iloc[3]['START']

如果您想在现有数据结构下具体存储,可以使用以键作为索引、以值作为数据帧值的字典

^{pr2}$

如果您正在寻找结束日期和开始日期的差异,您可以简单地减去列,即

dates['Difference'] = dates['END']-dates['START']

我建议您阅读pandas文档,了解有关访问数据的更多信息here

编辑:

您也可以在代码中使用字典,即

startdatetime = {}
enddatetime = {}
#Up to line 27 done on MatLab script 
for d in range (0, list_m):
    Hull = PeriodList[d,0]
    Engine = PeriodList[d,1]
    startdatetime[d] = pd.to_datetime(PeriodList[d,2])
    enddatetime[d] =   pd.to_datetime(PeriodList[d,3])

希望这有帮助

相关问题 更多 >