Python 按日期范围从数据框中选择行

Python 按日期范围从数据框中选择行,python,pandas,Python,Pandas,我有以下数据帧: FAK_ART FAK_DAT LEIST_DAT KD_CRM MW_BW EQ_NR MATERIAL \ 0 ZPAF 2015-05-18 2015-05-31 D E 100107 S 1 ZPAF 2015-05-18 2015-05-31 D B 100107 S 2 ZPAF 2015-05-18 20

我有以下数据帧:

       FAK_ART    FAK_DAT  LEIST_DAT      KD_CRM MW_BW       EQ_NR MATERIAL  \
0         ZPAF 2015-05-18 2015-05-31         D     E  100107  S   
1         ZPAF 2015-05-18 2015-05-31         D     B  100107  S   
2         ZPAF 2015-05-18 2015-05-31         D     E  100108  S   
3         ZPAF 2015-05-18 2015-05-31         D     B  100108  S   
4         ZPAF 2015-05-18 2015-05-31         D     E  100109  S   
5         ZPAF 2015-05-18 2015-05-31         D     B  100109  S   
6         ZPAF 2015-05-18 2015-05-31         D     E  100110  S   
7         ZPAF 2015-05-18 2015-05-31         D     B  100110  S   
8         ZPAF 2015-05-18 2015-05-31         D     E  100111  S 
。 .

现在,我只想选择日期为2015-05-31的行

我试着用date_range来处理它,但总是出现错误:

ValueError:值的长度与索引的长度不匹配

ValueError:必须指定两个开始、结束或期间

我的想法是:

data_faktura['LEIST_DAT'] = pd.date_range('2016-01-31', '2016-01-31')
但是我犯了一个错误

如何修复或解决此问题?

您可以从列
LEIST\u DAT
中选择:

或:

您还可以按开始和结束日期选择:

data_fakture = data_fakture.set_index('LEIST_DAT').ix['2015-05-31':'2016-02-29']
print (data_fakture)
           FAK_ART     FAK_DAT      KD_CRM MW_BW       EQ_NR MATERIAL
LEIST_DAT                                                            
2015-05-31    ZPAF  2015-05-18         D     E  100107  S
2015-05-31    ZPAF  2015-05-18         D     B  100107  S
2015-05-31    ZPAF  2015-05-18         D     E  100108  S
2015-05-31    ZPAF  2015-05-18         D     B  100108  S
2015-05-31    ZPAF  2015-05-18         D     E  100109  S
2015-05-31    ZPAF  2015-05-18         D     B  100109  S
2015-05-31    ZPAF  2015-05-18         D     E  100110  S
2015-05-31    ZPAF  2015-05-18         D     B  100110  S
2015-05-31    ZPAF  2015-05-18         D     E  100111  S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     E  100712   S
2016-02-29    ZPAF  2016-02-12  CP     B  100212   S
2016-02-29    ZPAF  2016-02-12  CP     E  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     E  100748   S
2016-02-29    ZPAF  2016-02-12  CP     B  100748   S
2016-02-29    ZPAF  2016-02-12  CP     E  100760   S

无论数据类型是string还是datetime,以下内容都应起作用:
data\u fakture[data\u faktura['LEIST\u DAT']=='2016-01-31']
我必须在数据帧上再次分配吗?分配是什么意思?你不是在尝试过滤df吗?是的,我的意思是如果我必须这样做:data_faktura=data_faktura[data_faktura['LEIST_DAT']=='2016-01-31']是的,应该可以
#change 2016-02-29 to your datetime
data_fakture = data_fakture.set_index('LEIST_DAT').ix['2016-02-29']
print (data_fakture)
           FAK_ART     FAK_DAT      KD_CRM MW_BW       EQ_NR MATERIAL
LEIST_DAT                                                            
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     E  100712   S
2016-02-29    ZPAF  2016-02-12  CP     B  100712   S
2016-02-29    ZPAF  2016-02-12  CP     E  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     E  100748   S
2016-02-29    ZPAF  2016-02-12  CP     B  100748   S
2016-02-29    ZPAF  2016-02-12  CP     E  100760   S
data_fakture = data_fakture.set_index('LEIST_DAT').loc['2016-02-29']
print (data_fakture)
           FAK_ART     FAK_DAT      KD_CRM MW_BW       EQ_NR MATERIAL
LEIST_DAT                                                            
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     E  100712   S
2016-02-29    ZPAF  2016-02-12  CP     B  100712   S
2016-02-29    ZPAF  2016-02-12  CP     E  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     E  100748   S
2016-02-29    ZPAF  2016-02-12  CP     B  100748   S
2016-02-29    ZPAF  2016-02-12  CP     E  100760   S
data_fakture = data_fakture.set_index('LEIST_DAT').ix['2015-05-31':'2016-02-29']
print (data_fakture)
           FAK_ART     FAK_DAT      KD_CRM MW_BW       EQ_NR MATERIAL
LEIST_DAT                                                            
2015-05-31    ZPAF  2015-05-18         D     E  100107  S
2015-05-31    ZPAF  2015-05-18         D     B  100107  S
2015-05-31    ZPAF  2015-05-18         D     E  100108  S
2015-05-31    ZPAF  2015-05-18         D     B  100108  S
2015-05-31    ZPAF  2015-05-18         D     E  100109  S
2015-05-31    ZPAF  2015-05-18         D     B  100109  S
2015-05-31    ZPAF  2015-05-18         D     E  100110  S
2015-05-31    ZPAF  2015-05-18         D     B  100110  S
2015-05-31    ZPAF  2015-05-18         D     E  100111  S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     B  100686   S
2016-02-29    ZPAF  2016-02-12  CP     E  100712   S
2016-02-29    ZPAF  2016-02-12  CP     B  100212   S
2016-02-29    ZPAF  2016-02-12  CP     E  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     B  100735   S
2016-02-29    ZPAF  2016-02-12  CP     E  100748   S
2016-02-29    ZPAF  2016-02-12  CP     B  100748   S
2016-02-29    ZPAF  2016-02-12  CP     E  100760   S