使用pd.read_csv()每小时读取一次数据

时间:2019-02-12 22:01:13

标签: python pandas csv

我正在使用pd.read_csv()读取csv文件

数据包含财务OHLC时间序列,即小时数据。 日期和小时是用,分隔的值。

现在我有两个系列,一个用于日期,一个用于小时。 有没有办法在一个系列中使用两个值,这样我就可以将整个对象转换为datetime对象。

read方法应该跳过第一个逗号,并使用两个第一个(日期和小时)值存储在一系列中,以用作索引。

df = pd.read_csv (csvpath, names=['Date', 'Hour', 'Open_Price','High_Price','Low_Price','Close_Price'], usecols=[0,1,2,3,4,5]) df['Date'] = pd.to_datetime(df.Date)

我尝试将小时数据转换为日期时间对象,但现在它正在为其分配与实际数据不匹配的日期。

谢谢

2 个答案:

答案 0 :(得分:1)

这可能是从CSV中解析日期格式的问题。

to_datetime接受一个format参数,您应该根据从CSV中读取的日期格式创建一个字符串。请注意,当您关闭此参数时,to_datetime将尽最大努力来猜测您要解析的日期的格式。以下是有关如何创建格式字符串的参考:http://strftime.org/

举一个简单的例子:如果您的日期看起来像02-12-19,则可以使用:pd.to_datetime(df.Date, format='%m-%d-%y')

答案 1 :(得分:0)

通过创建一个新的csv然后使用熊猫读取它来解决它。

def csv_edit(csv_in, csv_out):
# Reads in first two columns (Dates and hours)
Date, Hour = np.loadtxt (csv_in, dtype = 'str', delimiter = ',', unpack = True, usecols=[0,1])
# Reads in ohlc data
df = pd.read_csv(csv_in, delimiter = ',', names=['Open_Price','High_Price','Low_Price','Close_Price'], usecols = [2,3,4,5])
# Combines dates and hours to one series
df['Date'] = [x + '.' + y for x, y in zip(Date, Hour)]
# Sets index to Date
df.set_index('Date', inplace=True)
# Writes to new csv
df.to_csv(csv_out)