Pandas根据两个条件移除行

2024-06-16 13:52:35 发布

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

我有一个像这样的熊猫数据帧-

ColA            ColB                       ColC
Apple       2019-03-02 18:00:00        Saturday
Orange      2019-03-03 10:00:00        Sunday 
Mango       2019-03-04 09:00:00        Monday

我试图根据某些条件从日期框中删除行。在

  1. 如果日期时间为上午9点及以上和下午5点及以下,请删除该行。

  2. 如果是周末(周六和周日),请勿删除此项。

预期输出在数据帧中没有芒果。在


Tags: 数据apple时间条件mondayorangesundaymango
2条回答

为了提供另一种选择,你可以这样写:

cond1 = df.ColB.dt.hour >= 9   # After 09:00
cond2 = df.ColB.dt.hour <= 15  # Before 16:00
cond3 = df.ColB.dt.weekday < 5 # Mon-Fri

df = df[~(cond1&cond2&cond3)] 

完整示例:

^{pr2}$

退货:

^{3}$

似乎比我想的要难

s1=df.ColB.dt.hour.between(9,17,inclusive=False)
df.loc[s1|df.ColC.isin(['Saturday','Sunday'])]
     ColA                ColB      ColC
0   Apple 2019-03-02 18:00:00  Saturday
1  Orange 2019-03-03 10:00:00    Sunday

或使用

^{pr2}$

相关问题 更多 >