python - 如何从字符串中提取日期并聚合它?
问题描述
我有一个数据框,它有两个功能item_listing_time 和item_sale_time。
这些是字符串,看起来像这样:
item_listing_time | item_sale_time |
---|---|
2018-09-30T19:06:21.000-07:00 | 2018-09-30T23:06:21.000-07:00 |
我想创建一个功能sold_in_24h当销售发生在 24 小时时为真。
目前我的工作流程如下所示:
# replacing "T" and "." char in item_listing_time and item_sale_time columns by space
data2['item_listing_time'] = data2['item_listing_time'].str.replace('T',' ')
data2['item_listing_time'] = data2['item_listing_time'].str.replace('.',' ')
data2['item_sale_time'] = data2['item_sale_time'].str.replace('T',' ')
data2['item_sale_time'] = data2['item_sale_time'].str.replace('.',' ')
# storing datetime into datetime_listing column as datetime type
data2['date_listing'] = data2.litem_listing_time.str.split(' ').str[0]
data2['time_listing'] = data2.item_listing_time.str.split(' ').str[1]
data2['datetime_listing'] = data2.date_listing + " "+data2.time_listing
data2['datetime_listing'] = pd.to_datetime(data2['datetime_listing'], format='%Y-%m-%d %H:%M:%S')
# same with saletime
data2['date_sale'] = data2.item_sale_time.str.split(' ').str[0]
data2['time_sale'] = data2.item_sale_time.str.split(' ').str[1]
data2['saletime'] = data2.date_sale + " "+data2.time_sale
data2['saletime'] = pd.to_datetime(data2['saletime'], format='%Y-%m-%d %H:%M:%S')
# creating column for sold_in_24h
data2["was_sold_in_24h"] = (data2["saletime"] - data2["datetime_listing"]) < pd.Timedelta(days=1)
这种方法有效,但不确定它是否是解决这个问题的好方法。
任何意见如何改进它或以这种方式保留它,因为它提供了预期的结果。
谢谢!
解决方案
您可以直接将"item_listing_time"
and转换"item_sale_time"
为日期时间:
df["item_listing_time"] = pd.to_datetime(df["item_listing_time"])
df["item_sale_time"] = pd.to_datetime(df["item_sale_time"])
one_day = pd.Timedelta(days=1)
df["sold_in_24h"] = df.apply(
lambda x: x["item_listing_time"] + one_day > x["item_sale_time"], axis=1
)
print(df)
印刷:
item_listing_time item_sale_time sold_in_24h
0 2018-09-30 19:06:21-07:00 2018-09-30 23:06:21-07:00 True
推荐阅读
- ios - NSURLConnection 完成错误 - 检索和显示图像时代码 -1002
- swift - 将贝塞尔路径居中到 UIview?
- javascript - 尝试设置 Github 页面时出现大错误
- .htaccess - 如果 url 不包含特定字符,则 htaccess 重定向
- c++ - 将带有斜杠的 Unix 路径转换为 Windows 路径
- java - 在 Android 上通过 HttpURLConnection 处理 php 回显数据
- feathersjs - 将 PKG 与 featherjs 应用程序一起使用
- sql - 累积不重复计数
- arm - ARM Cortex-M0 堆栈寄存器是否在硬故障期间保存在 $psp 或 $msp 上?
- android-asynctask - 使用 AsyncTask.execute().get() 显示 ProgressBar