删除相似的列数值匹配 pandas

对于下面的pandas数据框,我想删除所有videoview值相等且四列中的两列left, width, top, height值在正负1范围内的行。因此,在下面的示例中,第二行(width, height)为(20, 14),第三行(width, height)为(21, 15),因此这两行中的一行应该被删除,因为这些行在widthheight列中共享正负1的值。

view     video                      left    width  top    heightEndzone  57906_000718_Endzone.mp4   372     17      279     17Endzone  57906_000718_Endzone.mp4   851     20      273     14Endzone  57906_000718_Endzone.mp4   853     21      271     15Endzone  57906_000718_Endzone.mp4   855     21.     267     16Endzone  57906_000718_Endzone.mp4   857     21.     265     17Sideline 57906_000718_Sideline.mp4  763     18.     98      26...

示例输出,输出可能因删除方法而异:

view     video                      left    width  top    heightEndzone  57906_000718_Endzone.mp4   372     17      279     17Endzone  57906_000718_Endzone.mp4   851     20      273     14Endzone  57906_000718_Endzone.mp4   857     21.     265     17Sideline 57906_000718_Sideline.mp4  763     18.     98      26...

谢谢!


回答:

不知道这是否足够准确。它并不一定能切掉所有在1秒内的实例,但一些小的调整就能解决问题。此外,我有点假设你更关心“width/height”和“left/top”的分组,而不是这四个的任何组合。不管怎样,你只需要针对你真正关心的任何组重复进行这种转换,直到所有排列组合。对于简洁起见,我省略了“left/top”的分组,但它只是这个的重复。

> df[df.index.isin(df[['view', 'video']].join(df[['width', 'height']]//2).drop_duplicates().index)       view                      video  left  width  top  height0   Endzone   57906_000718_Endzone.mp4   372   17.0  279      171   Endzone   57906_000718_Endzone.mp4   851   20.0  273      143   Endzone   57906_000718_Endzone.mp4   855   21.0  267      165  Sideline  57906_000718_Sideline.mp4   763   18.0   98      26

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注