我正在尝试通过我拥有的DF,但无法弄清楚。
这是一个脚本,用于检查Excel文件中新雇员的日期。
import pandas as pd
import datetime as dt
xls = pd.ExcelFile(r'test.xlsx')
df = pd.read_excel(xls, 'New Employment')
df['Start Date'] = pd.to_datetime(df['Start Date'])
today = pd.Timestamp.today()
#Calculate how many days are left til the employee starts working
df['Starts In'] = (df['Start Date'] - today).dt.days
delta_df = df[['Name', 'Starts In']]
因此,此时delta_df
拥有整个新员工列表。它会打印出他们的名字和开始工作的天数。
我想检查一下这个DF,并设置一个条件来检查是否有一名员工会在5天内开始工作。如果有,请将其添加到列表/ DF。
该列表/ DF稍后将附加到我将发送的电子邮件中。
我不确定如何执行此检查。
答案 0 :(得分:0)
delta_df['starts_soon'] = delta_df['Starts In'] < 5
您无需遍历数据框,矢量化使熊猫如此强大。
如果您只想要少于5天之内的人员名单,请执行
之类的操作delta_df.loc[delta_df['Starts In'] < 5, 'Name']
您甚至可以为您的电子邮件
delta_df.loc[delta_df['Starts In'] < 5, 'Name'].to_csv('name_list.csv')
答案 1 :(得分:0)
只需过滤您的 delta_df 即可获得带有'开始于' <= 5
的行lessthan5 = delta_df[delta_df['Starts In'] <= 5]
然后您可以检查此数据框是否不为空
if len(lessthan5) > 0:
# DO WHAT YOU WANT WITH THOSE EMPLOYEES
您可以使用:
将员工列为列表。lessthan5.Name.tolist()
答案 2 :(得分:0)
创建过滤器:
ax = df.May2019.T.plot(kind='barh', subplots = False, stacked=True,
figsize=(12,8), title = 'Number of customers per revenue slice',
width=0.99)
vals = ax.get_yticks()
ax.set_yticklabels(['60%-80%', '40%-60%', '20%-40%', '0%-20%'])
ax.set_ylabel('Top x% Revenue')
ax.set_xlabel('Number of customers in revenue band')
使用过滤器获取名称:
0.8 75
0.6 26
0.4 10
0.2 3
Name: May2019, dtype: int64