python - 为数据框生成日期数据
问题描述
我有一个数据框,其中 date_1 共有 30 个条目(2019 年 1 月 9 日至 2019 年 9 月 30 日)。我想生成另一个数据框,这样:
- 每个 date_1,我们有 29 个条目,每个 date_1 对应于 date_2,因此 date_2 的范围是(date_1 - 30 到 date_1 - 1)。
例如,01/09/2019 实际上对应于 (02/08/2019 - 31/08/2019) 的 date_2 02/09/2019 将对应于 (03/08/2019 - 01/09/2019) 的 date_2 .
等等
最终的数据集列如下所示:
Date_1 Date_2
任何人都可以提供同样的帮助。
编辑
预期输出:
Date_1 Date_2
01/09/2019 02/08/2019
01/09/2019 03/08/2019
01/09/2019 04/08/2019
01/09/2019 05/08/2019
.
.
.
.
01/09/2019 29/08/2019
01/09/2019 30/08/2019
02/09/2019 03/08/2019
.
.
.
02/09/2019 31/08/2019
谢谢
解决方案
这段代码是否给出了您期望的结果?
import pandas as pd
import numpy as np
df = pd.DataFrame({'Date_1' : pd.period_range('2019/09/01', '2019/09/30', freq='D').repeat(30)})
df['Date_2'] = np.tile(np.arange(30, 0, -1), df.Date_1.unique().size)
df.Date_2 = pd.to_timedelta(df.Date_2, 'D')
df.Date_2 = df.Date_1 - df.Date_2
print(df)
第一个答案:
“这是一种方法(不完全是您要求的“Date_2”格式,但这是想法):
import pandas as pd
import numpy as np
df = pd.DataFrame({'Date_1' : pd.period_range('2019/09/01', '2019/09/30', freq='D')})
df['Date_2_1'] = df.Date_1 - np.timedelta64(30, 'D') # First date for Date_2
df['Date_2_2'] = df.Date_1 - np.timedelta64(1, 'D') # Second date for Date_2
print(df)
"
推荐阅读
- node.js - Node.js 中的 Require 函数
- java - 在全球范围内在 Java 中集成第三方外观
- unit-testing - 为 Mat-button [color] 的数据绑定属性编写单元测试
- flutter - Instagram 应用内浏览器破坏了 Flutter 网页
- prometheus - 我已经在 100 台不同的服务器上安装了 Node exporter,并读取了我的 prometheus 服务器上收集的数据。但无法区分数据
- python - 如何从类中产生招摇?
- json - 为什么我收到此错误错误:预期类型为“列表”的值
',但得到了 '_JsonMap' 类型之一 - c++ - C++中友元函数默认参数的私有构造函数
- sql - 条件连接大查询
- android - 您的免安装应用 APK 未声明至少一个将“android:autoVerify”属性设置为 true 的网络“intent-filter”元素