2

次のようなCSVデータがあります

2011.12.08,22:45,1.33434,1.33465,1.33415,1.33419,265
2011.12.08,23:00,1.33419,1.33542,1.33419,1.33472,391
2011.12.08,23:15,1.33470,1.33483,1.33383,1.33411,420
2011.12.08,23:30,1.33413,1.33451,1.33389,1.33400,285

EURUSD15.csvという名前のファイルでMetatrader4から来ています

Pandasライブラリとread_csv関数を使用してPythonでこのファイルをインポートしたいと思います...

だから私はこれをしました:

#!/usr/bin/env python
from pandas import *
df = read_csv('data/EURUSD15.csv', header=None)
df.columns = ['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']
print(df)

日付/時刻を解析してもらいたいのですが...

だから私は変わった

df = read_csv('data/EURUSD15.csv', header=None)

df = read_csv('data/EURUSD15.csv', header=None, parse_dates=[[1, 2]])

しかし、私はこのエラーメッセージを受け取ります

Exception: Length mismatch (7 vs 6)

日付と時刻の列を解析し、2つの列を1つの「日時」列と見なすにはどうすればよいですか。

4

4 に答える 4

1

列はゼロインデックスであるため、実行する必要があります。 これは最新バージョンのパンダにありますが、0.8.0+で動作するはずです。parse_dates=[[0,1]]

In [74]: data = """\
2011.12.08,22:45,1.33434,1.33465,1.33415,1.33419,265
2011.12.08,23:00,1.33419,1.33542,1.33419,1.33472,391
2011.12.08,23:15,1.33470,1.33483,1.33383,1.33411,420
2011.12.08,23:30,1.33413,1.33451,1.33389,1.33400,285
"""

In [75]: pd.read_csv(StringIO(data), 
                     names=['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume'], 
                     index_col='Date_Time', parse_dates=[[0, 1]])
Out[75]: 
                        Open     High      Low    Close  Volume
Date_Time                                                      
2011-12-08 22:45:00  1.33434  1.33465  1.33415  1.33419     265
2011-12-08 23:00:00  1.33419  1.33542  1.33419  1.33472     391
2011-12-08 23:15:00  1.33470  1.33483  1.33383  1.33411     420
2011-12-08 23:30:00  1.33413  1.33451  1.33389  1.33400     285

も機能することに注意してくださいindex_col=0。複雑な日付解析は結果の列を付加するため、parse_datesは日付処理前の列インデックス(つまり、0は日付、1は時刻)をindex_col参照し、日付処理後の列インデックスを参照します。したがって、列名を使用することをお勧めします。これにより、前処理と後処理の列のインデックスについて考える必要がなくなります。

于 2012-07-27T08:29:34.860 に答える
0

parse_datesはインデックス値を取りません。

次のようなものを試してください:

pd.read_csv('data/EURUSD15.csv',  parse_dates = [['YYYY.MM.DD', 'HH:MM']], index_col = 0, 
        date_parser=parse)
于 2012-07-26T16:20:19.343 に答える
0
parse = lambda x: datetime.strptime(x, '%d-%m-%Y %H:%M')
df = pd.read_csv('data/EURUSD15.csv', parse_dates=[[0, 1]], date_parser=parse, index_col=[0],   header=None)
keys = ['Open', 'High', 'Low', 'Close','Volume']
df.columns = [x for x in keys]
于 2013-03-19T00:28:05.867 に答える
0

より簡単な方法は、pytraderと呼ばれるドラッグアンドドロップソリューションを使用することです。githubで確認してください。

于 2021-06-15T14:12:27.683 に答える