[英]Select rows from pandas dataframe with dates
給定一個簡單的數據框
df = pd.DataFrame(np.random.rand(5,3))
我可以使用來選擇帶有標簽1和3的記錄
df.loc[[1,3]]
但是,如果我更改索引,則它使用日期...
df.index = pd.date_range('1/1/2010', periods=5)
這不再起作用:
df.loc[['2010-01-02', '2010-01-04']]
KeyError:“ [['2010-01-02','2010-01-04']]都不在[索引]中”
.loc
如何在這種情況下與日期一起使用?
一種可能的解決方案是將日期轉換為DatetimeIndex
或to_datetime
,然后效果很好:
print (df.loc[pd.DatetimeIndex(['2010-01-02', '2010-01-04'])])
0 1 2
2010-01-02 0.827821 0.285281 0.781960
2010-01-04 0.872664 0.895636 0.368673
print (df.loc[pd.to_datetime(['2010-01-02', '2010-01-04'])])
0 1 2
2010-01-02 0.218419 0.806795 0.454356
2010-01-04 0.038826 0.741220 0.732816
您可以使用isin
的布爾掩碼:
In [151]:
df[df.index.isin(['2010-01-02', '2010-01-04'])]
Out[151]:
0 1 2
2010-01-02 0.939004 0.236200 0.495362
2010-01-04 0.254485 0.345047 0.273453
不幸的是,部分日期時間字符串與列表匹配目前無法正常工作,因此需要傳遞此日期時間或實際日期時間值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.