遍历熊猫的DataFrame

时间:2019-06-17 15:20:01

标签: python excel pandas dataframe

我正在尝试通过我拥有的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稍后将附加到我将发送的电子邮件中。

我不确定如何执行此检查。

3 个答案:

答案 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