0

次の形式の生データがあります。レコード区切り文字は〜で、要素区切り文字は|です。

date|o|h|l|c|e|f~07-12-2012 09:15|5934.0000|5945.5000|5934.0000|5938.6500|1749606|1749606~07-12-2012 09:16|5939.1000|5941.8000|5936.3500|5941.8000|1064557|2814163

ここで、このデータをpandasデータフレームに解析したいのですが、pandasデータフレームが理解できる形式はkey-columnです。したがって、基本的に、split('〜')を使用してこのデータを3行に解析できます。

date|o|h|l|c|e|f
07-12-2012 09:15|5934.0000|5945.5000|5934.0000|5938.6500|1749606|1749606
07-12-2012 09:16|5939.1000|5941.8000|5936.3500|5941.8000|1064557|2814163

しかし、以下に示すような列に基づいて分割できるAPIはありますか、またはデータをフィードするために直接使用できるパンダのAPIはありますか?

date - 07-12-2012 09:15,07-12-2012 09:16
o - 5934.0000,5939.1000 
h ..... etc
l
c
e
f 
4

2 に答える 2

2

私はこれをもっと簡単にできるようにしたいと思っていますread_table

df = read_table(path, sep='|', lineterminator='~')

次のパンダのリリースに注意してください:

http://github.com/pydata/pandas/issues/2457

編集:これはパンダ0.10で行われ、動作します

于 2012-12-08T18:21:22.873 に答える
1

これがあなたが探しているものであるかどうかはよくわかりません:

s = 'date|o|h|l|c|e|f~07-12-2012 09:15|5934.0000|5945.5000|5934.0000|5938.6500|1749606|1749606~07-12-2012 09:16|5939.1000|5941.8000|5936.3500|5941.8000|1064557|2814163'

rows = s.split ('~')
d = {}
keys = rows [0].split ('|')
for key in keys: d [key] = []
for row in rows [1:]:
    for idx, value in enumerate (row.split ('|') ):
        d [keys [idx] ].append (value)

print (d)
于 2012-12-08T17:07:12.557 に答える