字符串和日期条件

2024-06-01 07:01:53 发布

您现在位置:Python中文网/ 问答频道 /正文

data = [{'A':"re", "B": 120630, "C": 120630, "D": "Sunday"}, {'A':"aeg", "B": 121228, "C": 130104, "D": "Monday"}, {'A':"aab", "B": 120601, "C": 120608, "D": "Sunday"}, {'A':"bbe", "B": 120925, "C": 120630, "D": "Monday"}, {'A':"feh", "B": 120726, "C": 120803, "D": "Monday"}, {'A':"dd", "B": 120622, "C": 120630, "D": "Monday"}]
df = pd.DataFrame(data)
df["B"] = pd.to_datetime (df["B"], format="%y%m%d")
df["C"] = pd.to_datetime (df["C"], format="%y%m%d")

我要选择两个条件都满足的行:

  • D列为“星期一”。你知道吗
  • B列日期是C列日期前7或8天。你知道吗

我的意思是,我想得到这些行:

aeg 2012-12-28 2013-01-04  Monday

feh 2012-07-26 2012-08-03  Monday

dd  2012-06-22 2012-06-30  Monday

我试过:

df[(df["D"] == "Monday") & (df["B"] < df["C"])]

但此代码不满足第二个条件(B列日期是C列日期前7或8天)。你知道吗

还有别的主意吗? 非常感谢。你知道吗


Tags: toreformatdfdatadatetime条件dd
1条回答
网友
1楼 · 发布于 2024-06-01 07:01:53

这是一种方法。你知道吗

df.loc[(df["D"] == "Monday") & (df["B"] - df["C"]).dt.days.isin({-7, -8})]

#      A          B          C       D
# 1  aeg 2012-12-28 2013-01-04  Monday
# 4  feh 2012-07-26 2012-08-03  Monday
# 5   dd 2012-06-22 2012-06-30  Monday

相关问题 更多 >