簡體   English   中英

從熊貓數據框中選擇帶有日期的行

[英]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如何在這種情況下與日期一起使用?

一種可能的解決方案是將日期轉換為DatetimeIndexto_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM