繁体   English   中英

Python:如何根据 2 列中的条件过滤掉行

[英]Python: How to filter out rows based on a condition from 2 columns

我在 Python 中有一个数据框DF ,我想根据 2 列过滤它的行。

特别是,我想删除orderdate早于startdate的行

如何反转/反对以下代码中的条件以实现我想要的?

DF = DF.loc[DF['orderdate']<DF['startdate']]

我可以像下面那样重新构建代码,但它不会覆盖一些有 NaT 的行,我想保留它们

DF = DF.loc[DF['orderdate']>=DF['startdate']]

在括号中的条件前面插入~将反转条件并删除所有不满足它的行。

DF = DF.loc[~(DF['orderdate']<DF['startdate'])]

1- loc从“orderdate”列中获取行,并将它们与“startdate”列中的行进行比较。 如果条件为真,则返回行的索引并将其存储在 ids 数组中。

2-drop方法删除dataframe中的行,参数为行索引的数组,inplace=True,这样保证操作是在dataframe本身上进行的,如果是False操作会返回一份dataframe

# Get names of indexes for which column orderdate > =  startdate
ids = DF.loc[DF['orderdate'] >= DF['startdate']].index
# Delete these row indexes from dataFrame
DF.drop(ids, inplace=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM