簡體   English   中英

從熊貓數據框中提取與月日列表相對應的行

[英]Extract rows from pandas dataframe corresponding to list of month-day

這一定是之前問過的,但是我找不到我想要的東西,如果重復的話很抱歉。 我有一個數據框df ,其中索引位於python datetime中:

1982-01-01  [282.7945979191705, 279.12373352050776, 277.74...
1982-01-02  [279.12373352050776, 277.7481374216604, 278.21...
1982-01-03  [277.7481374216604, 278.21691274118945, 276.85...
1982-01-04  [278.21691274118945, 276.85932268415183, 273.1...
1982-01-05  [276.85932268415183, 273.12550555218706, 273.4...
...
2001-12-27  [277.50443007919813, 274.45894647954583, 274.6...
2001-12-28  [274.45894647954583, 274.6708258324927, 275.59...
2001-12-29  [274.6708258324927, 275.59033873840997, 274.35...
2001-12-30  [275.59033873840997, 274.3595948271699, 274.92...
2001-12-31  [274.3595948271699, 274.92645028921316, 283.02...

現在,我可以使用以下月份dates列表:

Index(['01-08', '01-23', '02-07', '02-22', '03-09', '03-24', '04-08', '04-23',
       '05-08', '05-23', '06-07', '06-22', '07-07', '07-22', '08-06', '08-21',
       '09-05', '09-20', '10-05', '10-20', '11-04', '11-19', '12-04', '12-19'],
      dtype='object')

如何從數據框中提取與這些日期相對應的所有行? 我嘗試了df.loc[dates]但這不起作用。

使用strftime

yourdf=df[df.index.strftime('%m-%d').isin(dates)].copy()

您的dates是“熊貓”系列的“對象”類型。 您不能直接比較日期時間序列和對象序列。

相反,您應該首先使用數據框的索引來創建“對象”類型的新列,其中包含相應的月和日。

df['month-day'] = pd.DatetimeIndex(df.index).month.astype(str).str.zfill(2)  + "-" + pd.DatetimeIndex(df.index).day.astype(str).str.zfill(2) 

之后,您可以使用以下新的month-day列進行過濾:

df[df["month-day"].isin(dates)]

暫無
暫無

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

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