从csv堆叠文件创建pandas DataFrame

时间:2012-09-03 15:16:56

标签: python csv dataframe pandas

我想从以下csv文件创建一个pandas DataFrame:

...........
EUR MS 3M;20111025;7d;1.1510;
EUR MS 3M;20111024;7d;1.1530;
EUR MS 3M;20111025;1m;1.1580;
EUR MS 3M;20111024;1m;1.1590;
...........

DataFrame理想情况下会将名称作为第一列值(“EUR MS 3M”),由第二列(“20111025”)中的值组成的索引,以及将采​​用DataFrame的列名称从第三列(“7d”,“1m”等)开始,在最后一个csv列(“1.150”等)中给出相应的值。 我已尝试过不同的方法,但无法以正确的方式对此事进行排序。我认为我应该做的第一件事应该是'卸载'csv中的值,以便首先使用对齐的索引,然后创建一个DataFrame,但实际上并不是如何... 任何比我更专业的人都有任何线索?我几周前才开始学习熊猫... 谢谢你的帮助!

(我正在编辑问题以使事情更清楚: 我想获得一个名为EUR MS 3M的数据框,其中包含以下列:

index    7d     1m 
20111024 1.1530 1.1590 
20111025 1.1510 1.1580 

希望现在有点清楚。感谢)

1 个答案:

答案 0 :(得分:4)

这样的事情怎么样:

In [103]: print data
EUR MS 3M;20111025;7d;1.1510
EUR MS 3M;20111024;7d;1.1530
EUR MS 3M;20111025;1m;1.1580
EUR MS 3M;20111024;1m;1.1590

In [104]: frame = pd.read_csv(StringIO(data), sep=';', 
                              names=['frame_name', 'index', 'column', 'value'])
In [105]: name = frame.ix[0, 'frame_name']

In [106]: rs = frame.ix[:, 1:].pivot('index', 'column', 'value')

In [107]: rs.name = name

In [108]: rs
Out[108]:
column       1m     7d
index
20111024  1.159  1.153
20111025  1.158  1.151