python - 熊猫创建一个具有多个其他列的复杂条件的新列
问题描述
一个df在这里:
df=pd.DataFrame({'Date':['2020-01-01', '2020-01-23', '2020-02-22', '2020-03-04'], 'ID':[1001,1002,1002,1003]})
我需要一个带有额外列的表Wed
,它给我上周三的时间Date
,如果ID
是1002
,则在此之前返回 2 周三Date
解决方案
from pandas.tseries.offsets import DateOffset
d1 = DateOffset(days=7)
d2 = DateOffset(weekday=2)
df["Date"] = pd.to_datetime(df["Date"])
df["Wed"] = np.where(df.ID == 1002, df.Date - 3 * d1 + d2, df.Date - d1 + d2)
print(df)
印刷:
Date ID Wed
0 2020-01-01 1001 2019-12-25
1 2020-01-23 1002 2020-01-08
2 2020-02-22 1002 2020-02-05
3 2020-03-04 1003 2020-02-26
推荐阅读
- spring-mvc - 如何使用 OAuth“授权”方法获取谁正在尝试登录?
- cmake - 如何将外部 CMake 项目安装到 CMAKE_CURRENT_BINARY_DIR
- python - 根据特定列对熊猫数据框进行排名和排序
- unity3d - Unity 2018.1:按钮在所有画布中都没有响应,但第一个
- amazon-web-services - 是否可以在 AWS Lambda 上运行 docker image/DockerFile?
- c - windows API 访问 SD 卡上的分区
- javascript - 间隔两个 div 并阻止它们相互连接
- php - Wordpress 高级搜索表单 - 安全性
- javascript - 如何将天数添加到定义的日期
- bokeh - 在全息视图中可以进行颜色映射吗?