python - 从 csv 堆叠文件创建 pandas DataFrame

标签 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”等)。 我尝试过不同的方法,但无法以正确的方式解决这个问题。我认为我应该做的第一件事应该是“unstack”csv中的值,以便首先有一个对齐的索引,然后创建一个DataFrame,但实际上不知道如何...... 有比我更专业的人知道吗?我几周前才开始学习 Pandas ...... 感谢您的热心帮助!

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

index    7d     1m 
20111024 1.1530 1.1590 
20111025 1.1510 1.1580 

希望现在更清楚了。谢谢)

最佳答案

像这样怎么样:

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

关于python - 从 csv 堆叠文件创建 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250475/

相关文章:

python - 将 Scrapy 蜘蛛的数据分配给变量

matlab - 停止在 CSV 文件末尾写入空行(使用 MATLAB)

ios - Swift 从 UITableView 创建 CSV 并附加到电子邮件

python - 将 Pandas DataFrame 转换为 JSON

r - 连接 data.frame 或 data.table 中的匹配列

Python:迭代数组的行和列

python - python 3.6.4 中的错误 Opencv 3

C#:string[] 到定界字符串。有单线吗?

python - 根据日期和时间分割数据

python - 打印 [Python] 在 Pycharm 中被视为关键字