gpt4 book ai didi

python - 检查日期是否在另一个数据框中并设置一个新列

转载 作者:行者123 更新时间:2023-11-30 22:27:50 25 4
gpt4 key购买 nike

我给出了两个数据框

df1:

    DATE     INTERVALL    
0 2017-01-01 00:30:00.000
1 2017-01-01 01:00:00.000
2 2017-01-01 01:30:00.000
3 2017-01-01 02:00:00.000
4 2017-01-01 02:30:00.000
....
200 2017-05-09 00:30:00.000
201 2017-05-09 01:00:00.000
202 2017-05-09 01:30:00.000
203 2017-05-09 02:00:00.000
....

df2:

Name                         Date                       
Neujahr 2017-01-01
Karfreitag 2017-04-14
Ostersonntag 2017-04-16
Ostermontag 2017-04-17
1. Mai 2017-05-01
Christi Himmelfahrt 2017-05-25
Pfingstsonntag 2017-06-04

我想在 df1 中有一个带有“HOLIDAY”的新列。如果 df2 中包含“DATE”列,则“HOLIDAY”的值应为 1。

示例:

    DATE     INTERVALL        HOLIDAY    
0 2017-01-01 00:30:00.000 1
1 2017-01-01 01:00:00.000 1
2 2017-01-01 01:30:00.000 1
3 2017-01-01 02:00:00.000 1
4 2017-01-01 02:30:00.000 1
....
200 2017-05-09 00:30:00.000 0
201 2017-05-09 01:00:00.000 0
202 2017-05-09 01:30:00.000 0
203 2017-05-09 02:00:00.000 0
...

我尝试使用 if 语句,但这很慢。我认为有更好的解决方案:

    if row['DATE'] == "2017-01-01":
df1.set_value(index, 'HOLIDAY', 1)

最佳答案

使用 isin 通过 boolean mask True 转换为 1False0 转换为 astype :

#convert to datetimes if necessary
df1['DATE'] = pd.to_datetime(df1['DATE'])
df2['Date'] = pd.to_datetime(df2['Date'])

df1['HOLIDAY'] = df1['DATE'].isin(df2['Date']).astype(int)
print (df1)
DATE INTERVALL HOLIDAY
0 2017-01-01 00:30:00.000 1
1 2017-01-01 01:00:00.000 1
2 2017-01-01 01:30:00.000 1
3 2017-01-01 02:00:00.000 1
4 2017-01-01 02:30:00.000 1
200 2017-05-09 00:30:00.000 0
201 2017-05-09 01:00:00.000 0
202 2017-05-09 01:30:00.000 0
203 2017-05-09 02:00:00.000 0

详细信息:

print (df1['DATE'].isin(df2['Date']))
0 True
1 True
2 True
3 True
4 True
200 False
201 False
202 False
203 False
Name: DATE, dtype: bool

print (df1['DATE'].dtype)
datetime64[ns]

print (df2['Date'].dtype)
datetime64[ns]

关于python - 检查日期是否在另一个数据框中并设置一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com