Python 检查时间列表是否在时间范围内

Python 检查时间列表是否在时间范围内,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧 df1 df2 我想检查来自df2的时间是否在df1中的范围内,以及它是否在检查名称是否匹配。 如果名称匹配,则在df2中创建另一列,给它一个yes标签。如果名称不匹配,则将其标记为“否” 理想情况下,df2应如下所示: start name label 2020-02-25 09:24:38 a yes 2020-02-25 09:24:38 a yes 2020-02-25 09:24:3

我有两个数据帧

df1

df2

我想检查来自df2的时间是否在df1中的范围内,以及它是否在检查名称是否匹配。
如果名称匹配,则在df2中创建另一列,给它一个yes标签。如果名称不匹配,则将其标记为“否”

理想情况下,df2应如下所示:

   start                 name    label
2020-02-25 09:24:38     a        yes
2020-02-25 09:24:38     a        yes
2020-02-25 09:24:38     b        no
2020-02-25 09:24:41     b        yes
2020-02-25 09:24:41     e        no
2020-02-25 09:24:41     b        yes

任何帮助都将不胜感激

假设您的数据帧包含相等的索引,我会首先检查名称是否匹配,然后检查日期是否满足:

# check if names match
df2['name_match'] = (df1['name'] == df2['name'])

# check if dates match
df2['dt_match'] = (df1['start'] <= df2['start']) & (df1['end'] <= df2['start'])

# finally, map to a label (using boolean logic)
df2['label'] = (df2['name_match'] * df2['dt_match']).map({True:"yes", False:"no"})

# You can then remove the columns you created
df2.drop(columns=['name_match', 'dt_match'], inplace=True)
#检查名称是否匹配
df2['name_match']=(df1['name']==df2['name'])
#检查日期是否匹配

df2['dt_match']=(df1['start']假设您的数据帧包含相等的索引,我会首先检查名称是否匹配,然后检查日期是否满足:

# check if names match
df2['name_match'] = (df1['name'] == df2['name'])

# check if dates match
df2['dt_match'] = (df1['start'] <= df2['start']) & (df1['end'] <= df2['start'])

# finally, map to a label (using boolean logic)
df2['label'] = (df2['name_match'] * df2['dt_match']).map({True:"yes", False:"no"})

# You can then remove the columns you created
df2.drop(columns=['name_match', 'dt_match'], inplace=True)
#检查名称是否匹配
df2['name_match']=(df1['name']==df2['name'])
#检查日期是否匹配

df2['dt_match']=(df1['start']为什么预期输出中的
名称
与输入中的
名称
不同?抱歉,已更改!为什么预期输出中的
名称
与输入中的
名称
不同?抱歉,已更改!
# check if names match
df2['name_match'] = (df1['name'] == df2['name'])

# check if dates match
df2['dt_match'] = (df1['start'] <= df2['start']) & (df1['end'] <= df2['start'])

# finally, map to a label (using boolean logic)
df2['label'] = (df2['name_match'] * df2['dt_match']).map({True:"yes", False:"no"})

# You can then remove the columns you created
df2.drop(columns=['name_match', 'dt_match'], inplace=True)