簡體   English   中英

如何從數據框中切片唯一的日期數據?

[英]How to slice unique dates data from a 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.073062  

我想在第21天和第29天提取數據。我的代碼如下:Code1:

df.index == ['2019-03-21','2019-03-29']

輸出:

ValueError: Lengths must match

代碼2:

df['2019-03-21','2019-03-29']

輸出:

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

您能幫我在這里找到錯誤嗎?

這里發生的事情很少。 首先,當您使用“ ==”將一個列表與另一個列表進行比較時,它不一定會返回逐元素比較-您必須使用pandas內置的“ isin”方法。

其次,當您將掩碼傳遞給數據框以對其進行過濾時,掩碼需要具有與數據框中的行數相同的元素數。

第三,您有一個要與日期進行比較的日期時間索引,因此必須首先提取日期部分才能進行比較。

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只是給出了行的索引。 例如,如果您運行:

for i in df.index: 
    print(i)

它返回0,1,2,這是行索引。 但是您要查找的是特定列df['date_column']因此您應該將此列中的值與所需內容進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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