python-3.x - 从多个特定日期选择 pandas 中的数据

标签 python-3.x pandas dataframe

dft = pd.DataFrame(randn(100000,1), columns=['A'],
     index=pd.date_range('20130101',periods=100000,freq='T'))

如您所见,我以 10 分钟的间隔初始化了从“2013-01-01”到“2013-03-11”的日期帧。如何根据特定条件选择特定数据?

1) 列表中的日期 例如:如果有一个列表 ['2013-01-02', '2013-01-04', '2013-01-06'] 如何选择此列表日期上的数据?或者如何选择不在该列表日期中的数据? 更具体地说,“2013-01-02”表示从“2013-01-02 00:00:00”到“2013-01-02 23:50:00”的所有数据。

2) 多个切片选择 例如:我希望可以选择多个切片中的数据,如下所示: ['2013-01-02':'2013-01-03'] & ['2013-01-05':'2013-01-07'] & ['2013-01-09':'2013-01- 11'] 更具体地说,这个切片应该与 python 切片相同,即包括左但不包括右。

最佳答案

假设这是原始数据(带有Datetime索引)

dft = pd.DataFrame(np.random.randn(100000,1), columns=['A'],
     index=pd.date_range('20130101',periods=100000,freq='T'))
dft.head()
                            A
2013-01-01 00:00:00  0.313644
2013-01-01 00:01:00  0.458860
2013-01-01 00:02:00  0.841434
2013-01-01 00:03:00 -0.135846
2013-01-01 00:04:00 -0.881316

对于 1),只需使用 .isin()

myDates = ['2013-01-02', '2013-01-04', '2013-01-06']

# to get data in list
df_in = dft[pd.to_datetime(dft.index.date).isin(myDates)]
df_in.head()
                            A
2013-01-02 00:00:00  0.444005
2013-01-02 00:01:00 -0.073561
2013-01-02 00:02:00  0.256737
2013-01-02 00:03:00  1.304807
2013-01-02 00:04:00 -0.741956

# to get data not in list
df_not_in = dft[~pd.to_datetime(dft.index.date).isin(myDates)]
df_not_in_list.head()
                            A
2013-01-01 00:00:00 -0.944070
2013-01-01 00:01:00  0.225456
2013-01-01 00:02:00  0.571424
2013-01-01 00:03:00 -0.004389
2013-01-01 00:04:00  0.933229

对于2),如果我理解正确的话,您想使用多个日期时间切片来选择数据。为此,您可以使用嵌套列表中的 multiple index masks 按日期进行过滤

myDates = [['2013-01-02','2013-01-03'],
           ['2013-01-05','2013-01-07'],
           ['2013-01-09','2013-01-11']]
df_masked = dft[
      (dft.index >= myDates[0][0]) & (dft.index <= myDates[0][1]) & \
      (dft.index >= myDates[1][0]) & (dft.index <= myDates[1][1]) & \
      (dft.index >= myDates[2][0]) & (dft.index <= myDates[2][1])
      ]

关于python-3.x - 从多个特定日期选择 pandas 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074064/

相关文章:

python - 如何在 form_valid 中获取对象 ID?

python-3.x - python如何在谷歌云数据存储中获取所有种类的名称

python - 如何将具有重复索引条目的数据帧与具有唯一索引条目的数据帧合并?

pandas - Python pandas 根据在另一个数据框中的查找将列添加到数据框中

python - 此错误的起因

python 3 : check if method is static

python - 将数据框的列追加到列表中

python - 根据 Pandas 中的行匹配,有条件地使用另一个 DataFrame 中的值填充列

python - pandas DataFrame如何使用groupby()来分割和组合数据

r - 重命名R中的一个命名列