Python 如何从数据框中分割唯一日期数据?

Python 如何从数据框中分割唯一日期数据?,python,dataframe,Python,Dataframe,现有的日期切片方法通常提取两个日期之间的数据,但不提取不同的日期。我的问题是对不同日期的数据进行切片。 我的数据帧由以下公式给出: df = A B 2019-03-21 19:15:00 21.787958 16.728439 2019-03-25 19:16:00 20.983078 15.865983 2019-03-29 19:17:00 20.122042 15.0

现有的日期切片方法通常提取两个日期之间的数据,但不提取不同的日期。我的问题是对不同日期的数据进行切片。 我的数据帧由以下公式给出:

df =                           A         B
     2019-03-21 19:15:00   21.787958  16.728439  
     2019-03-25 19:16:00   20.983078  15.865983 
     2019-03-29 19:17:00   20.122042  15.073062  
我想提取21天和29天的数据。我的代码如下: 代码1:

输出:

ValueError: Lengths must match
代码2:

df['2019-03-21','2019-03-29']
输出:

KeyError: ('2019-03-21', '2019-03-25')

你能帮我找出这里的错误吗?

这里发生的事情很少。首先,当您使用“==”将一个列表与另一个列表进行比较时,它不一定返回元素级比较-您必须使用内置的“isin”方法

其次,当您将掩码传递给数据帧以对其进行过滤时,掩码需要具有与数据帧中的行相同数量的元素

第三,您有一个datetime索引,您希望将其与日期进行比较,因此必须首先提取日期组件进行比较

df=pd.DataFrame({'A':[21.787958,20.983078,20.122042], 'B':16.728439,15.865983,15.073062]})
df.index=pd.to_datetime(['2019-3-21 19:15:0','2019-3-25 19:16:0','2019-3-29 19:17:0'])
下面是过滤后的数据帧:

df[pd.to_datetime(df.index.date).isin(pd.to_datetime(['2019-03-21','2019-03-29']))]
你可以使用

df.loc[df['date_column'].isin(['2019-03-21','2019-03-29'])]

df[(df['A']=='2019-03-21')|(df['A']=='2019-03-29')]
您编写的
df.index
只提供了行的索引。例如,如果您运行:

df.index中的i的
:
印刷品(一)
它返回0,1,2,这是行索引。但您要查找的是特定列的内容,即
df['date\u column']
,因此您应该将此列中的值与您要查找的值进行比较

可能重复的
df[pd.to_datetime(df.index.date).isin(pd.to_datetime(['2019-03-21','2019-03-29']))]