python - 比较每行 x 列中的日期和 y 列的打印值
问题描述
我对 python 编程语言比较陌生,并将我的小项目作为学习 python 的目标。现在我正在努力解决两个(可能)小问题。一般来说,我想将生日日期与当前日期进行比较。如果“生日”栏中的生日日期=今天,则应在句子中打印此人的姓名。
我遇到的第一个问题是我需要比较日期和月份,而不是年份,我无法弄清楚。第二个问题是我无法弄清楚如何打印今天生日的人的姓名。我尝试的是通过索引“名字”,但随后将打印整个索引。附表和代码。预先感谢您的帮助。
姓 | 名 | 生日 |
---|---|---|
爱 | 大卫 | 07.05.1986 |
恨 | 罗伯特 | 17.12.1976 |
和平 | 坦率 | 02.09.2021 |
生日为 02.09.2021 的最后一个被修改为具有真实结果。
输入
from datetime import date
from datetime import timedelta
from openpyxl import load_workbook
wb=load_workbook("U:\\Python\\untitled\\Birthdaylist.xlsx")
ws=wb["Sheet1"]
import pandas as pd
df=pd.DataFrame(ws.values)
df.columns=df.iloc[[0]].values.tolist()[0]
df=df[1:]
df.head()
for i in df["Birthday"]:
if i.date()< date.today():
print("It's no one's birthday today!")
if i.date() == date.today():
print("Today is ",(df["First Name"]), "'s birthday")
if date.today() < i.date() < (date.today()+ timedelta(days=3)):
print(df["First Name"], "'s birthday is on ", df["Birthday"].date, ".")
输出
It's no one's birthday today!
It's no one's birthday today!
It's no one's birthday today!
It's no one's birthday today!
It's no one's birthday today!
Today is 1 David
2 Robert
3 Frank
4 Julia
5 Marie
Name: First Name, dtype: object 's birthday
解决方案
你想在 pandas 中执行此操作(根据标签看起来很像)吗?
# read file
df = pd.read_excel('Birthdaylist.xlsx')
# ensure datetime
df['Birthday'] = pd.to_datetime(df['Birthday'], dayfirst=True)
# set up condition for birthday
today = pd.to_datetime('today', dayfirst=True)
has_birthday = ( df['Birthday'].dt.month.eq(today.month)
&df['Birthday'].dt.year.eq(today.year)
)
# slice dataframe
df[has_birthay]
输出:
Last Name First Name Birthday
2 Peace Frank 2021-09-02
印刷部分:
if len(df[has_birthday])>0:
for _, row in df[has_birthday].iterrows():
print(f"Today is {row['First Name']}'s birthday") # NB. prints several rows if multiple birthdays
else:
print("It's no one's birthday today!")
推荐阅读
- php - Laravel 错误:您的系统中缺少请求的 PHP 扩展 sqlite3
- spring-boot - springboot程序启动时,filter会多次过滤同一路径。这是什么原因?
- javascript - 自定义按钮上的执行触发器问题 > Apexchat
- python - matplotlib 以自定义日期格式和间隔显示 x 轴
- php - 在用户个人资料部分创建自定义字段以上传用户的简历
- php - 如何在 Find() 的 where() 中添加 orderBy()?
- azure - 内存中的 Service Fabric 有状态服务与外部存储
- mysql - 确定客户记录的相关子查询
- actions-on-google - 操作已发布,但仍不显示在其他帐户中
- aspnetboilerplate - 将 JSON 序列化从 camelCase 更改为 PascalCase [重复 - 没有解决方案?]