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('~') 将这些数据解析成三行

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 可以使用它基于列拆分它,如下所示,或者在 pandas 中有一个 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='~')

留意下一个 pandas 版本:

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

编辑:这已完成并适用于 pandas 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 回答