因此,带有 pandas 模块的 Python 似乎是 matlab 和 R 的一个很好的选择。这就是我最近切换到它的原因。那里有资源,我搜索了论坛但找不到类似的东西。如果您有一些教程或其他有用材料的链接,请发布它们。
Wes McKinney 有一个关于熊猫的精彩而详尽的教程。 http://www.youtube.com/watch?v=w26x-z-BdWQ&list=FLJ5xKwlfj7wg8S_A5SgR6Wg&feature=mh_lolz
在 1:10,他展示了如何按日期而不是整数索引数据框中的行的示例。我想做类似的事情。
不同之处在于我有 3 个变量,Y1、Y2、Y3,每个变量都有一列时间戳,X1、X2、X3。
TestFile.txt:
X1 Y1 X2 Y2 X3 Y3
27/11/2012 11.436 29/11/2012 20.631 4/12/2012 10.209
28/11/2012 11.468 30/11/2012 20.185 5/12/2012 9.973
29/11/2012 11.414 3/12/2012 19.962 6/12/2012 9.736
30/11/2012 11.355 4/12/2012 19.562 7/12/2012 9.509
3/12/2012 11.309 5/12/2012 18.908 10/12/2012 9.259
4/12/2012 11.118 6/12/2012 18.288 11/12/2012 8.109
5/12/2012 10.873 7/12/2012 17.973
6/12/2012 10.582 10/12/2012 17.788
7/12/2012 10.264 11/12/2012 17.554
10/12/2012 9.886
11/12/2012 9.164
我想做四件事:
按 Xi 中的日期关联 Yi 中的数据,因为 i = 1,2,3
按日期索引行
删除早于 2012 年 4 月 12 日(即 Y3 的第一个日期)的所有数据
只能按日期和列访问所有日期
这是一个测试文件,它描述了如何读取数据以及如何打印数据。您可以看到 X1 被正确解析为 pandas 日期格式,但不是 X2 或 X3。这是我试图通过指定 index_col=[0,2,4]
和
parse_dates = True 来做的
TestFile.py:
import pandas as pd
df = pd.read_csv('TestFile.txt',sep='\t', index_col=[0,2,4], parse_dates = True)
print 'pandas version: ', pd.__version__
print df
给出输出:
pandas version: 0.10.0b1
X1 X2 X3 Y1 Y2 Y3
2012-11-27 29/11/2012 4/12/2012 11.436 20.631 10.209
2012-11-28 30/11/2012 5/12/2012 11.468 20.185 9.973
2012-11-29 3/12/2012 6/12/2012 11.414 19.962 9.736
2012-11-30 4/12/2012 7/12/2012 11.355 19.562 9.509
2012-03-12 5/12/2012 10/12/2012 11.309 18.908 9.259
2012-04-12 6/12/2012 11/12/2012 11.118 18.288 8.109
2012-05-12 7/12/2012 None 10.873 17.973 NaN
2012-06-12 10/12/2012 None 10.582 17.788 NaN
2012-07-12 11/12/2012 None 10.264 17.554 NaN
2012-10-12 None None 9.886 NaN NaN
2012-11-12 None None 9.164 NaN NaN
想要的输出:
Y1 Y2 Y3
2012-04-12 11.118 19.562 10.209
2012-05-12 10.873 18.908 9.973
2012-06-12 10.582 18.288 9.736
2012-07-12 10.264 17.973 9.509
2012-10-12 9.886 17.788 9.259
2012-11-12 9.164 17.554 8.109
如果您对如何执行此操作有任何想法,非常感谢您的帮助:)