[英]Select rows from a DataFrame by date_range
我有以下數據框:
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
. . .
387976 ZPAF 2016-02-12 2016-02-29 CP B 100686 S
387977 ZPAF 2016-02-12 2016-02-29 CP B 100686 S
387978 ZPAF 2016-02-12 2016-02-29 CP E 100712 S
387979 ZPAF 2016-02-12 2016-02-29 CP B 100712 S
387980 ZPAF 2016-02-12 2016-02-29 CP E 100735 S
387981 ZPAF 2016-02-12 2016-02-29 CP B 100735 S
387982 ZPAF 2016-02-12 2016-02-29 CP B 100735 S
387983 ZPAF 2016-02-12 2016-02-29 CP E 100748 S
387984 ZPAF 2016-02-12 2016-02-29 CP B 100748 S
387985 ZPAF 2016-02-12 2016-02-29 CP E 100760 S
現在我只想選擇日期為 2015-05-31 的行。
我試着用 date_range 處理它,但我總是得到錯誤:
ValueError:值的長度與索引的長度不匹配
或
ValueError: 必須指定開始、結束或句點中的兩個
我的想法是:
data_faktura['LEIST_DAT'] = pd.date_range('2016-01-31', '2016-01-31')
但后來我得到一個錯誤!
我該如何解決或解決這個問題?
您可以從set_index
列LEIST_DAT
,然后按ix
選擇:
#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
或者loc
:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.