如何解决熊猫:如何更改输出.csv数据的格式以使用逗号分隔符?
背景
使用pandas
,已成功使用以下程序将毫秒级刻度数据重新采样为1秒间隔OHLC(开高低关)数据。滴答数据是从.csv文件中读取的,程序会将1秒的OHLC数据写入具有新列标题的新.csv文件中。问题源于格式化输出数据的方式(制表符分隔而不是逗号分隔,并且具有不希望的列标题)。这使得使用plotly
绘制OHLC烛台图具有挑战性。我一直在使用Sublime Text 3打开.csv文件。
目标:
对于1)确保输出的OHLC(开高低开)数据以逗号分隔,并且2)仅输出时间,不带今天的日期。所需的格式可以在下面的“ .csv所需的输出格式”下进一步看到。
当前尝试:
import pandas as pd
import sys
# Read data from file
data_frame = pd.read_csv('input_data.csv',names=['Date_time','Bid','Bid_qty','Ask','Ask_qty'],index_col=0,parse_dates=True,delimiter = ',')
data_frame.head()
# Sample data at set intervals
data_bid=data_frame['Bid'].resample('1S').ohlc()
data_ask=data_frame['Ask'].resample('1S').ohlc()
data_bid.head()
data_ask.head()
# Concatenate bid and ask
data_ask_bid = pd.concat(
[data_bid,data_ask],axis=1,keys=['Bid','Ask'])
# display options
pd.set_option('display.max_rows',None) # display all rows
pd.set_option('display.max_columns',None) # display all columns
pd.set_option('display.width',150) # Fit columns on same line
pd.set_option('display.max_colwidth',None) # Set max width
# Print to file
original_stdout = sys.stdout # Save reference to original standard output
with open('output_data.csv','w') as f:
sys.stdout = f # Change the standard output
print(data_ask_bid)
sys.stdout = original_stdout # Reset standard output to original value
对于pandas.read_csv
函数,尝试使用参数sep=','
来控制read_csv的分隔符,但没有成功。在打印到输出文件时,也尝试将pandas.DataFrame.to_csv
函数也与参数sep=','
一起使用,这也是不成功的。
输入.csv数据格式(时间,出价,出价数量,要价,要价):
00:00:00.033,10.6674,1000000,10.6724,1000000
00:00:00.060,2000000
00:00:01.645,1000000
00:00:01.670,2000000
00:00:02.198,1000000
00:00:03.198,10.672,1000000
00:00:03.202,10.6671,10.6672,1000000
.csv的当前输出格式:
Bid Ask
open high low close open high low close
Date_time
2020-10-21 00:00:00 10.6674 10.6674 10.6674 10.6674 10.6724 10.6724 10.6724 10.6724
2020-10-21 00:00:01 10.6674 10.6674 10.6674 10.6674 10.6724 10.6724 10.6724 10.6724
2020-10-21 00:00:02 10.6674 10.6674 10.6674 10.6674 10.6724 10.6724 10.6724 10.6724
2020-10-21 00:00:03 10.6674 10.6674 10.6671 10.6672 10.6720 10.6720 10.6720 10.6720
.csv所需的输出格式:
time,bid_open,bid_high,bid_low,bid_close,ask_open,ask_high,ask_low,ask_close
00:00:00,10.6724
00:00:01,10.6724
00:00:02,10.6724
00:00:03,10.6720,10.6720
摘要:
Q1。如何以逗号分隔输出到输出.csv文件的每个值(包括列标题)?
第二季度。如何在输出的.csv文件中没有今天的日期显示时间?
解决方法
您似乎将数据帧的字符串表示形式打印到文件中,这是不正确的。如果这样做,它应该可以工作:
import pandas as pd
# Read data from file
data_frame = pd.read_csv('input_data.csv',names=['Date_time','Bid','Bid_qty','Ask','Ask_qty'],index_col=0,parse_dates=True,delimiter = ',')
# Sample data at set intervals
data_bid=data_frame['Bid'].resample('1S').ohlc()
data_ask=data_frame['Ask'].resample('1S').ohlc()
# Concatenate bid and ask
data_ask_bid = pd.concat(
[data_bid,data_ask],axis=1,keys=['Bid','Ask'])
data_ask_bid.to_csv('file.csv',index=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。