Python 字符串和日期条件
我想选择具有两个条件的行: D栏是星期一。 B列日期比C列日期早7或8天。 我的意思是,我想得到这些行:Python 字符串和日期条件,python,Python,我想选择具有两个条件的行: D栏是星期一。 B列日期比C列日期早7或8天。 我的意思是,我想得到这些行: 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"
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")
我试过:
aeg 2012-12-28 2013-01-04 Monday
feh 2012-07-26 2012-08-03 Monday
dd 2012-06-22 2012-06-30 Monday
但该代码不满足第二个条件,即B列日期为C列日期前7或8天
还有别的想法吗?
谢谢。这是一种方法
df[(df["D"] == "Monday") & (df["B"] < df["C"])]
欢迎来到SO。请同时指定您已经尝试过的内容?如果你还没有尝试过任何东西,请开始,然后在遇到困难时问一个问题。请提供一些代码。请花点时间阅读
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