为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫在下一个星期天为每一行返回

大熊猫在下一个星期天为每一行返回

江户川乱折腾 2022-01-05 12:18:21
在 Pandas for Python 中,我有一个数据集,其中有一列日期时间。我需要为每一行创建一个包含下一个星期日的日期的新列。我尝试了各种方法尝试使用 iterrows 然后找出一周中的哪一天,并添加一天直到那天是 7,但它没有用,我什至不确定我将如何返回日期而不仅仅是天数。我也不觉得 iterrows 是最好的方法。从日期列返回下一个星期日的列的最佳方法是什么?
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

使用 Pandas 日期偏移量,例如:


>>> pd.to_datetime('2019-04-09') + pd.offsets.Week(weekday=6)

Timestamp('2019-04-14 00:00:00')

例如,这会在datetime一周内更改所提供的内容。这是矢量化的,因此您可以针对这样的系列运行它:


temp['sunday_dates'] = temp['our_dates'] + pd.offsets.Week(weekday=6)

    our_dates  random_data sunday_dates

0  2010-12-31         4012   2011-01-02

1  2007-12-31         3862   2008-01-06

2  2006-12-31         3831   2007-01-07

3  2011-12-31         3811   2012-01-01

Nb 该Week(weekday=INT)参数在星期一索引为 0,取值为 0 到 6(含)。因此,传递 0 会产生所有星期一,传递 1 会产生所有星期二,等等。使用它,您可以在一周中的任何一天制作任何您想要的东西。


铌如果你想要去的最后一个周日刚刚交换+到-回去。


Nb(这样的注释,非常有用)关于时间序列功能的具体文档可以在这里找到:https : //pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html


查看完整回答
反对 回复 2022-01-05
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

功能


import datetime

def datetime_to_next_sunday(original_datetime):

    return original_datetime + datetime.timedelta(days=6-original_datetime.weekday())

返回转移到下一个星期日的 datetime.datetime。拥有


import pandas as pd

df = pd.DataFrame({'A': ['Foo', 'Bar'],

                   'datetime': [datetime.datetime.now(),

                                datetime.datetime.now() + datetime.timedelta(days=1)]})


以下行应该用于工作:


df['dt_following_sunday'] = df[['datetime']].applymap(datetime_to_next_sunday)


查看完整回答
反对 回复 2022-01-05
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

接受的答案是要走的路,但您也可以为此使用Series.apply()和pandas.Timedelta(),即:


df["ns"] = df["d"].apply(lambda d: d + pd.Timedelta(days=(6 if d.weekday() == 6 else 6-d.weekday())))

    d                             ns

0   2019-04-09 21:22:10.886702    2019-04-14 21:22:10.886702


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号