Excel表格中,H列表示入境或者出境,M列表示出入境时间,D列表示出入境人员姓名。没名人员有多条出入境记录且数量不相等。如何筛查出入境25-28天同时出境3-5天,不断循环的人员名单。
1条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了解决这个问题,我们可以使用pandas库来处理Excel文件,并对数据进行筛选。下面是一个详细的步骤和代码示例,用于找出符合特定条件的人员名单:
-
首先,确保已经安装了
pandas
和openpyxl
库。如果没有安装,可以使用以下命令安装:pip install pandas openpyxl
-
读取Excel文件到pandas DataFrame。
-
将时间列转换为日期时间格式。
-
计算每个人的出入境间隔。
-
筛选出符合条件的人员。
下面是具体的Python代码实现:
import pandas as pd # 读取Excel文件 df = pd.read_excel('path_to_your_file.xlsx', engine='openpyxl') # 假设列名分别为'H'(出入境类型),'M'(时间),'D'(人员姓名) # 将时间列转换为日期时间格式 df['M'] = pd.to_datetime(df['M']) # 对每个人员分组并计算连续出入境的时间差 grouped = df.groupby('D') time_diffs = grouped['M'].diff().dt.days # 创建一个新的DataFrame来存储每个人员的连续出入境时间差 diff_df = pd.DataFrame() for name, group in grouped: # 筛选出连续出入境的时间差 continuous_diffs = group['M'].diff().dt.days.fillna(0) diff_df = diff_df.append(pd.DataFrame({ 'D': [name] * len(continuous_diffs), 'TimeDiff': continuous_diffs })) # 筛选符合特定条件的人员:出入境25-28天后再次入境,然后3-5天后再次出境 filtered = diff_df[(diff_df['TimeDiff'].shift(-1) >= 25) & (diff_df['TimeDiff'].shift(-1) <= 28) & (diff_df['TimeDiff'] >= 3) & (diff_df['TimeDiff'] <= 5)] # 找出符合条件的人员名单 target_persons = filtered['D'].unique() print("符合条件的人员名单:") print(target_persons)
这段代码首先读取Excel文件,然后对每个人员的出入境时间进行分组和计算时间差。接下来,它会筛选出符合条件的连续出入境时间差,最后找出满足条件的所有人员名单。
请将
path_to_your_file.xlsx
替换为实际的文件路径,并根据实际情况调整列名。执行上述代码后,你将得到符合条件的人员名单。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 在虚拟机环境下完成以下,要求截图!
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见