我有一个pandas plame,看起来像下面(行总是唯一的)

Start         End        Status       
AB            DD         T_DOWN    
TR            WE         T_UP       
DD            RE         P_DOWN     
TR            WE         R_WAIT
YT            GG         R_WAIT    
GG            LO         P_DOWN  

我想做的是找出其中一行的Start值等于另一行的End值,这些行的Status值包含字符串T_DOWNP_DOWN.所以如果存在这样的条件,那么保留包含Status的行的值P_DOWN

因此,在上面的例子中,第三行的Start值是DD,这与第一行的End值也是DD相匹配,并且这两行都存在T_DOWNP_DOWN.所以我会保留第三行,因为它包含StatusP_DOWN

作为一个计数器示例,请注意第六行的Start值为GG,第五行的End值也为GG.但是行包含Status个值,有R_WAITP_DOWN.所以这些行将不被考虑.

所以最终的结果看起来像

Start         End        Status       
TR            WE         T_UP       
DD            RE         P_DOWN     
TR            WE         R_WAIT
YT            GG         R_WAIT    
GG            LO         P_DOWN

我在网上查阅了一些资源,比较逻辑与我正在try 做的事情有点相似,但还不够接近,不能给我一个领先的开始.

Compare Multiple Columns to Get Rows that are Different in Two Pandas Dataframes

Pandas dataframe compare multiple rows with specific condition

有人能帮我一下吗?

推荐答案

IIUC,您可以使用boolean indexing后构建定制面具与isin:

# is the row a T_DOWN / P_DOWN?
m1 = df['Status'].isin(['T_DOWN', 'P_DOWN'])
# is the End matching a Start that has T_DOWN/P_DOWN?
m2 = df['End'].isin(df.loc[m1, 'Start'])
# if yes to both conditions, drop the row
out = df.loc[~(m1&m2)]

输出:

  Start End  Status
1    TR  WE    T_UP
2    DD  RE  P_DOWN
3    TR  WE  R_WAIT
4    YT  GG  R_WAIT
5    GG  LO  P_DOWN

Python-3.x相关问答推荐

字符串块数组:如何根据一个数组中的元素对另一个数组中的元素进行分组

在多个测试中维护和报告变量

网站抓取:当我使用Chrome DevTools中的网络选项卡时,找不到正确的URL来提供我想要的数据

我想判断df_entry_log[AM_PM],并根据测试填充列

为什么空列表也能起作用?

对大型数据框中的选定列进行重新排序

基于Pandas列动态创建分箱,以使观测值数量或计数占总计数的1%.

如何使用`re.findall`从字符串中提取数据

当我判断另一个 checkButton 时,如何判断两个 python tkinter checkButtons?

为什么 Multiprocessing 的 Lock 不会阻止其他进程使用对象?

使用正则表达式捕获组解析地址

Python rolling_corr 取消后,应该用什么方法来处理

使用 python-binance 时,heroku [regex._regex_core.error: bad escape \d at position 7] 出错

Dask worker post-processing

python用户输入5个偶数并打印最大的

python 3集合中的Discard()和Remove()函数有什么区别

无法在 macOS 上的 Anaconda3 python3.6 上安装 OpenCV3

从大字典中弹出 N 项的最快方法

将行附加到 DataFrame 的最快和最有效的方法是什么?

在 Meta 中创建具有动态模型的通用序列化程序