我有一个像这样的熊猫数据帧:
import numpy as np
import pandas as pd
np.random.seed(1234)
midx = pd.MultiIndex.from_product([['a', 'b', 'c'], pd.date_range('20130101', periods=6)], names=['letter', 'date'])
df = pd.DataFrame(np.random.randn(len(midx), 1), index=midx)
数据帧如下所示:
^{pr2}$我要做的是根据日期的条件保留所有行,这取决于字母。例如
例如,所有这些信息都可以存储在字典中。在
dictionary = {"a": slice("20130102", "20130105"),
"b": "20130103",
"c": slice("20130103", "20130105")}
有没有一种简单的方法可以用熊猫来计算?我没有找到任何关于这种过滤的信息。在
这是一个愚蠢的方法,但你可以用事实
并利用
pd.Index.slice_indexer(start, stop)
,它允许您将每个索引过滤到指定日期之间。在对于
date
中的每个“较小”DatetimeIndex,将其约束到指定的片段,然后构造(letter, date)
的元组,并在其上显式索引。在或者,如果您可以将日期指定为元组(对于单个日期,只需重复),则可以稍微压缩helper函数:
^{pr2}$您可以使用
query
,它是为这种选择标准而设计的。在如果稍微修改一下
dictionary
,则可以借助列表理解生成所需的查询:有关查询语句实际执行什么操作的详细信息,请参见下面的列表理解:
^{pr2}$只要对原词典稍作改动,我们就可以把它写得更简洁一些。我们可以在列表理解中使用
pd.IndexSlice
,然后pd.concat
如果您希望自动添加
^{pr2}$-
,可以使用datetime
,如下所示:相关问题 更多 >
编程相关推荐