首页 > 解决方案 > 熊猫创建一个具有多个其他列的复杂条件的新列

问题描述

一个df在这里:

df=pd.DataFrame({'Date':['2020-01-01', '2020-01-23', '2020-02-22', '2020-03-04'], 'ID':[1001,1002,1002,1003]})

我需要一个带有额外列的表Wed,它给我上周三的时间Date,如果ID1002,则在此之前返回 2 周三Date

在此处输入图像描述

标签: pythonpandas

解决方案


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

推荐阅读