在 Python 中为 pandas 对象添加月份
Posted
技术标签:
【中文标题】在 Python 中为 pandas 对象添加月份【英文标题】:Adding months to a pandas object in Python 【发布时间】:2019-04-02 04:43:29 【问题描述】:我有这个数据框对象:
Date
2018-12-14
2019-01-11
2019-01-25
2019-02-08
2019-02-22
2019-07-26
如果可能的话,我想要添加例如:3 months to the dates
,然后是 3 months to the new date (original date + 3 months)
和 repeat this x times
。我正在使用pd.offsets.MonthOffset
,但这只会增加一次月份,我需要做更多次。
我不知道这是否可能,但任何帮助都是完美的。
非常感谢您抽出宝贵的时间。
预期输出为(1个月加2次):
[[2019-01-14, 2019-02-11, 2019-02-25, 2019-03-08, 2019-03-22, 2019-08-26],[2019-02-14, 2019-03-11, 2019-03-25, 2019-04-08, 2019-04-22, 2019-09-26]]
【问题讨论】:
分享您的预期输出。 @MayankPorwal 完成谢谢 【参考方案1】:我相信您需要循环使用 f-string
s 来获取新列名:
for i in range(1,4):
df[f'Date_added_i_months'] = df['Date'] + pd.offsets.MonthBegin(i)
print (df)
Date Date_added_1_months Date_added_2_months Date_added_3_months
0 2018-12-14 2019-01-01 2019-02-01 2019-03-01
1 2019-01-11 2019-02-01 2019-03-01 2019-04-01
2 2019-01-25 2019-02-01 2019-03-01 2019-04-01
3 2019-02-08 2019-03-01 2019-04-01 2019-05-01
4 2019-02-22 2019-03-01 2019-04-01 2019-05-01
5 2019-07-26 2019-08-01 2019-09-01 2019-10-01
或者:
for i in range(1,4):
df[f'Date_added_i_months'] = df['Date'] + pd.offsets.MonthOffset(i)
print (df)
Date Date_added_1_months Date_added_2_months Date_added_3_months
0 2018-12-14 2019-01-14 2019-02-14 2019-03-14
1 2019-01-11 2019-02-11 2019-03-11 2019-04-11
2 2019-01-25 2019-02-25 2019-03-25 2019-04-25
3 2019-02-08 2019-03-08 2019-04-08 2019-05-08
4 2019-02-22 2019-03-22 2019-04-22 2019-05-22
5 2019-07-26 2019-08-26 2019-09-26 2019-10-26
【讨论】:
【参考方案2】:希望对你有帮助
from dateutil.relativedelta import relativedelta
month_offset = [3,6,9]
for i in month_offset:
df['Date_plus_'+i+'_months'] = df['Date'].map(lambda x: x+relativedelta(months=i))
【讨论】:
【参考方案3】:如果你的日期是date 对象,那应该很容易。您可以创建一个 3 个月的 timedelta
并将其添加到每个 date
。
或者,您可以使用.strptime()
将它们转换为日期对象,然后按照您的建议进行操作。您可以使用.strftime()
将它们转换回字符串。
【讨论】:
非常感谢@NotAnAmbiTurner以上是关于在 Python 中为 pandas 对象添加月份的主要内容,如果未能解决你的问题,请参考以下文章
Python 实战基础Pandas如何给股票数据新增年份和月份
Python Pandas 数据框:对于一年中的每个月,如果月份不存在,则将当月最后一天的日期添加到索引中,或者删除重复项
单击按钮后,如何在 Bootstrap DateTimePicker 中为日期添加月份?