根据CSV列中的日期发送电子邮件

时间:2019-01-25 00:08:49

标签: python-3.x

我希望从CSV文件中的列中读取数据。 此列中的所有数据均为日期。 (DD / MM / YYYY)。 我希望我的程序读取“日期”列,如果日期在当前日期的3天内,我想向该行中的所有值添加变量。

例如。

Date,Name,LaterDate
1/1/19,John Smith, 2/21/19

如果我在2019年2月19日运行程序,我希望发送一封电子邮件,指出“约翰·史密斯的案子将于2019年2月21日结束。”

我了解如何发送电子邮件。我卡住的部分是: 专门阅读CSV列。 如果日期在3天内, 将变量分配给ROW中的值, 使用这些变量发送自定义电子邮件。

我看到了很多“使用熊猫”,但我可能需要分解各个步骤。

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要读取csv文件的所有值并将其存储在变量(old_df)中。然后,您需要将所有日期保存在系列(dates)中。接下来,我们创建一个具有相同列的空DataFrame。在这里,我们为date中的每个dates创建一个简单的for循环,它的索引为i。从datetime库中将date转换为datetime对象。然后,我们减去当前日期和date之间的天数。取days的绝对值,这样我们总是得到正数的天数。然后将old_df中该特定日期的索引添加到new_df中。

import pandas as pd
from datetime import datetime

old_df = pd.read_csv('example.csv')
dates = old_df['LaterDate']

new_df = pd.DataFrame(columns=['Date', 'Name', 'LaterDate'])

for i, date in enumerate(dates):
    date = datetime.strptime(date, '%m/%d/%y')
    days = (datetime.now() - date).days
    if abs(days) <= 3:
        new_df = new_df.append(old_df.loc[i, :])

print(new_df)