【发布时间】:2016-05-17 12:49:53
【问题描述】:
我有几个 csv 文件,每个文件都包含一个月内的一种股票价格,并且有数百万条数据。 原始的 csv 数据数据如下:
AA_Candy.csv
Index CompanyName Time Price
1 AA Candy 030101090355 1.78
2 AA Candy 030101091533 1.79
.......
333498 AA Candy 031231145556 2.18
BB_Cookie.csv
1 BB Cookie 030101090225 3.20
2 BB Cookie 030101090845 3.14
.......
391373 BB Cookie 031231145958 3.88
我使用 python 和 pandas 来处理数据,在我加载并组合了一些数据文件之后,现在我有一个如下的数据框:
帧:
Index CompanyName Time Price
1 AA Candy 030101090355 1.78
2 AA Candy 030101091533 1.79
.......
333498 AA Candy 031231145556 2.18
333499 BB Cookie 030101090225 3.20
333500 BB Cookie 030101090845 3.14
.......
712871 BB Cookie 031231145958 3.88
时间031231145958代表2013-12-31 14:59:58
现在我想得到每家公司每小时的最高价格和最终价格,并得到一个输出文件,如:
range_start AA Candy/Max AA Candy/Close BB Cookie/Max BB Cookie/Close
0301010900 1.79 1.77 3.20 3.10
........
0312311400 2.24 2.18 3.88 3.88
因此,我想通过 CompanyName 和 Time 的前 8 个字符进行分组,以获取同一公司在一小时内的数据,然后进行计算以找到每个公司的最大价格值和最终价格值,并输出相同的结果连续开始一小时;让 companyName/Max 或 Close 成为新的列名。
因为我是 pandas 和 dataframe 的新手,所以我有以下问题:
- 如何按时间列(对象)的前8个字符对数据进行分组,然后得到我的期望值?
- 如何形成一个新的输出数据帧/矩阵作为我的预期输出?
谢谢!!
【问题讨论】:
-
这很宽泛,三个问题。尤其是与使看不见的代码“更快”运行有关的第三个问题。关于 SO 的好问题需要集中注意力并提供尽可能多的具体细节。
-
不会 031231145958 代表 2003-12-31 14:59:58 吗?
标签: python csv pandas ipython dataframe