【发布时间】:2021-10-28 21:11:07
【问题描述】:
我一直在使用 Pandas、BeautifulSoup 和其他一些库在 Python3 上进行抓取和 EDA 项目,并希望使用两个日期之间的时间差进行一些分析。我想确定开始日期和结束日期之间的天数(或者几个月甚至几年,如果这样会更容易的话),并且被卡住了。我有两列(播出开始日期、播出结束日期),日期格式如下:MM-YYYY(比如 01-2021)。我基本上想用结束日期和开始日期之间的时间差制作第三列(这样我可以在以后的分析中使用它)。
# split air_dates column into start and end date
dateList = df["air_dates"].str.split("-", n = 1, expand = True)
df['air_start_date'] = dateList[0]
df['air_end_date'] = dateList[1]
df.drop(columns = ['air_dates'], inplace = True)
df.drop(columns = ['rank'], inplace = True)
# changing dates to numerical notation
df['air_start_date'] = pds.to_datetime(df['air_start_date'])
df['air_start_date'] = df['air_start_date'].dt.date.apply(lambda x: x.strftime('%m-%Y') if pds.notnull(x) else npy.NaN)
df['air_end_date'] = pds.Series(df['air_end_date'])
df['air_end_date'] = pds.to_datetime(df['air_end_date'], errors = 'coerce')
df['air_end_date'] = df['air_end_date'].dt.date.apply(lambda x: x.strftime('%m-%Y') if pds.notnull(x) else npy.NaN)
df.isnull().sum()
df.dropna(subset = ['air_end_date'], inplace = True)
def time_diff(time_series):
return datetime.datetime.strptime(time_series, '%d')
df['time difference'] = df['air_end_date'].apply(time_diff) - df['air_start_date'].apply(time_diff)
最后四行是我尝试获取时差,但我收到一条错误消息,提示“ValueError:未转换的数据仍然存在:-2021”。任何帮助将不胜感激,因为这已经让我坚持了很长时间。谢谢!
【问题讨论】:
-
在您对它进行任何操作之前,您能否展示一个
df["air_dates"]的外观示例? -
这是每行内容的示例:2009 年 4 月 - 2010 年 7 月。
标签: python python-3.x pandas datetime timedelta