python - 如何找到两列之间的月份差异并将其保存在新列中?
问题描述
我有一个大数据框(片段如下):
start_date finish_date
2842 2019-02-16 19:35:55.125766+00:00 2019-06-23 08:10:42.867492+00:00
2844 2019-05-29 18:03:54.230822+00:00 2019-06-05 08:06:37.896891+00:00
2846 2019-03-26 10:29:14.626280+00:00 2019-03-28 03:00:12.350836+00:00
2847 2019-04-22 16:29:30.480639+00:00 2019-04-24 18:02:09.869749+00:00
2852 2019-06-28 11:32:32.104132+00:00 2019-07-07 20:15:47.000026+00:00
2853 2019-03-21 17:20:50.030024+00:00 2019-03-27 03:18:26.652882+00:00
2854 2019-07-12 13:46:24.119986+00:00 2019-09-16 14:36:16.995393+00:00
start_date 和 finish_date 是 datetime64 格式。
start_date
我需要创建一个新列,其中包含和之间的几个月的计算结果finish_date
。
对于我使用的每个字符串
len(pd.date_range(start=df.loc[2844, 'start_date'], end=df.loc[2844, 'finish_date'], freq='M'))
但我不知道如何将它应用于每一行......逐行。我想必须使用一些 lambda...
这个:
df['length'] = pd.date_range(start=df['start_date'], end=df['finish_date'], freq='M')
出现错误...
预期结果:
start_date finish_date length
2842 2019-02-16 19:35:55.125766+00:00 2019-06-23 08:10:42.867492+00:00 4
2844 2019-05-29 18:03:54.230822+00:00 2019-06-05 08:06:37.896891+00:00 1
2846 2019-03-26 10:29:14.626280+00:00 2019-03-28 03:00:12.350836+00:00 0
2847 2019-04-22 16:29:30.480639+00:00 2019-04-24 18:02:09.869749+00:00 0
2852 2019-06-28 11:32:32.104132+00:00 2019-07-07 20:15:47.000026+00:00 1
2853 2019-03-21 17:20:50.030024+00:00 2019-03-27 03:18:26.652882+00:00 0
2854 2019-07-12 13:46:24.119986+00:00 2019-09-16 14:36:16.995393+00:00 2
解决方案
Series.dt.month
由于两个日期都是 dtype datetime 您可以使用属性计算月份之间的差异:
df['length']=(df['finish_date'].dt.month-df['start_date'].dt.month).abs()
推荐阅读
- amazon-s3 - 如何解决“请求的资源上不存在'Access-Control-Allow-Origin'标头”错误?
- kong - Kong api未启用
- tensorflow - 有没有办法使用张量流来实现数学反卷积(完全反转卷积)?请让我知道是否有
- c# - AvPlayer 正在下载 mp3 而不是流式传输
- jquery - 如何禁用文本框 date_picker
- c# - 无法使用 Prism.Forms Xamarin 在 NavigationPage 中包装 MasterDetailPage 以显示后退按钮
- r - 如何将两行中的信息与几乎相同的名称组合起来
- jquery - 在 AJAX 中的字段名称上运行循环
- git - 这个 .gitconfig 文件系统部分的含义是什么?[文件系统“私有构建|1.8.0_222|/home/user/.Private”]
- python - 如何在 python 中使用 selenium 获取元素相对于画布元素的位置?