微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫:如何更改输出.csv数据的格式以使用逗号分隔符?

如何解决熊猫:如何更改输出.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 举报,一经查实,本站将立刻删除。