我需要使用具有多个索引的大型数据框,因此我尝试创建一个数据框以了解如何将其存储在hdf5文件中。数据框是这样的:(在前2列中有multi索引)
Symbol Date 0
C 2014-07-21 4792
B 2014-07-21 4492
A 2014-07-21 5681
B 2014-07-21 8310
A 2014-07-21 1197
C 2014-07-21 4722
2014-07-21 7695
2014-07-21 1774
我正在使用pandas.to_hdf,但在尝试选择组中的数据时会创建“固定格式存储”:
store.select('table','Symbol == "A"')
它返回一些错误,主要问题是
TypeError: cannot pass a where specification when reading from a Fixed format store. this store must be selected in its entirety
然后我试图像这样追加DataFrame:
store.append('ts1',timedata)
那应该创建一个表,但这给了我另一个错误:
TypeError: [unicode] is not implemented as a table column
所以我需要的代码将数据帧存储在一个表中HDF5格式并选择从单一索引的DATAS(为此目的,我发现这个代码:store.select('timedata','Symbol == "A"')
)
这是一个例子
In [8]: pd.__version__
Out[8]: '0.14.1'
In [9]: np.__version__
Out[9]: '1.8.1'
In [10]: import sys
In [11]: sys.version
Out[11]: '2.7.3 (default, Jan 7 2013, 09:17:50) \n[GCC 4.4.5]'
In [4]: df = DataFrame(np.arange(9).reshape(9,-1),index=pd.MultiIndex.from_product([list('abc'),date_range('20140721',periods=3)],names=['symbol','date']),columns=['value'])
In [5]: df
Out[5]:
value
symbol date
a 2014-07-21 0
2014-07-22 1
2014-07-23 2
b 2014-07-21 3
2014-07-22 4
2014-07-23 5
c 2014-07-21 6
2014-07-22 7
2014-07-23 8
In [6]: df.to_hdf('test.h5','df',mode='w',format='table')
In [7]: pd.read_hdf('test.h5','df',where='date=20140722')
Out[7]:
value
symbol date
a 2014-07-22 1
b 2014-07-22 4
c 2014-07-22 7
In [12]: pd.read_hdf('test.h5','df',where='symbol="a"')
Out[12]:
value
symbol date
a 2014-07-21 0
2014-07-22 1
2014-07-23 2
基于单个值/标签的切片 基于一个或多个级别的多个标签的切片 布尔条件和表达式的过滤 哪些方法适用于什么情况 为简单起见的假设: 输入数据表没有重复的索引键 下面的输入数据只有两个级别。(此处所示的大多数解决方案都概括为N个级别) 问题2b 我如何获得级别“二”中对应于“t”和“w”的所有值? 如何从检索横截面,即具有索引特定值的单行?具体来说,如何检索的横截面,由 如何选择与和相对应的两行?
问题内容: 用更多索引范围(例如by和)对数据帧进行切片的pythonic方法是什么? 我想要一个更优雅的方式: 结果: 像这样的东西会更优雅: 问题答案: 您可以使用numpy的“切片技巧”: 给出:
问题内容: 这似乎很明显,但是我似乎无法弄清楚如何将数据帧的索引转换为列? 例如: 至, 问题答案: 要么: 或: 因此,如果你有一个3级索引的多索引框架,例如: 并且要将索引中的第1级()和第3级()转换为列,你可以执行以下操作:
问题内容: 我敢肯定有一种明显的方法可以做到这一点,但现在还不能想到任何光滑的东西。 基本上不是引发异常,而是要获取或查看pandas索引中是否存在值。 我现在工作的是以下内容 问题答案: 这应该可以解决问题
问题内容: 摘要:这不起作用: 但是这样做: 为什么? 再生产: 这不起作用: 但是这样做: 链接到笔记本 我的问题是: 为什么只有第二种方式起作用?我似乎看不到选择/索引逻辑的差异。 版本是0.10.0 编辑:这不应该再这样了。从0.11版开始,提供。参见此处:http : //pandas.pydata.org/pandas- docs/stable/indexing.html 问题答案: 大
问题内容: 假设我有以下数据框: 我想创建一个MultiIndex,它将包含每个lvl的总和。输出将如下所示: 目前,我正在使用循环在每个级别上创建三个不同的数据框,然后在excel上对其进行操作,如下所示。因此,如果可能的话,我想在python中进行此计算。 提前谢谢了。 问题答案: 一些自由使用 我可以完全按照您的要求 至于如何!我将其留给读者练习。