Python 检查时间列表是否在时间范围内
我有两个数据帧 df1 df2 我想检查来自df2的时间是否在df1中的范围内,以及它是否在检查名称是否匹配。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
如果名称匹配,则在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)