假設我有從2010年到2020年的每日資料:
Ex:
日期col1
2010-01-01 False
2010-01-02 False
...
2020-12-31 False ...
我想為所有的行設定col1=True,其中(月等于4,日大于25)和月等于5,日小于5。 所以基本上意味著,對于4月25日和5月5日之間的所有日期,我想設定col1=True。
我怎樣才能做到呢?
uj5u.com熱心網友回復:
你可以使用.dt.month和.dt.day來訪問日期中的month和day,然后從中創建條件:
df.loc[
((df.Date.dt.month == 4) & (df.Date.dt.day > 25) |
((df.Date.dt.month == 5) & (df.Date.dt.day < 5) )。
'col1'] = True)
假設你的Date已經是datetime型別,如果不是,你可以用下面的方法來轉換:
df.Date = pd.to_datetime(df.Date)
uj5u.com熱心網友回復:
你可以創建一個布爾索引并將其分配給資料框架中的一個新列。
為了找到Date的值在其他兩個值之間的行,你可以使用between方法。between可以接受一個引數inclusive,它可以是"both","neither","left",或"right"中的任何一個。使用這個來撥出你想要的確切的間隔。
為了忽略年份,只對月和日進行比較,如果該列是dtype datetime64,你可以使用dt訪問器并使用strftime來獲得作為字串的月和日,并使用lexicographic排序進行比較:
col1 = df['Date'].dt.strftime('%m-%d') 。
'04-25',
'05-05',
包括="既不是"的情況下
)
在你的資料框架中添加布爾索引:
在你的資料框架中添加布爾索引。
df['col1'] = col1
根據評論中的@tdy,只為匹配的行設定'col1'中的值:
df.loc[col1, 'col1'] = True。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332415.html
標籤:
