我们得到一个包含姓名和生日的CSV文件,我们必须输出谁的生日是函数中的下一个。我一直收到一个本地未绑定错误,不知道如何修复它,基本上是尝试读取文件,检查日期,找到哪个日期是下一个,然后返回与该日期相关的名称第一个
35g0bw711#
所以我得到了这个-.您只想知道下一个bday是谁,并希望基于CSV文件得到这个人的name。
CSV
name
import pandas as pd from datetime import date def nextBirthdate(file, inp_date): d,m,y = [int(x) for x in inp_date.split('/')] df = pd.read_csv('file.csv', header=None) df[1] = pd.to_datetime(df[1]) df[1] = df[1].apply(lambda x: x.replace(year=y)) inp_date = date(y,m,d) df['Diff'] = (df[1].dt.date - inp_date).dt.days return df.sort_values(by=['Diff'])[0].values[0] nextBirthdate("birthdates.csv", "01/01/2022")
r3i60tvu2#
欢迎学习堆栈溢出。方法是1.读入CSV数据1.将数据转换为pandas DataFrame等格式2a.我建议您将日期转换为例如pd.Timestamp,而不要将它们保留为字符串,以避免在比较时发生不好的事情1.根据日期对DataFrame进行排序,或者查找具有最小值的行,这取决于您如何做每一件事是它自己的问题,至少有一个答案已经在堆栈溢出和其他地方,所以你可能不需要问一个新的,只是搜索它。
2条答案
按热度按时间35g0bw711#
所以我得到了这个-.您只想知道下一个bday是谁,并希望基于
CSV
文件得到这个人的name
。r3i60tvu2#
欢迎学习堆栈溢出。方法是
1.读入CSV数据
1.将数据转换为pandas DataFrame等格式
2a.我建议您将日期转换为例如pd.Timestamp,而不要将它们保留为字符串,以避免在比较时发生不好的事情
1.根据日期对DataFrame进行排序,或者查找具有最小值的行,这取决于您
如何做每一件事是它自己的问题,至少有一个答案已经在堆栈溢出和其他地方,所以你可能不需要问一个新的,只是搜索它。