首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果使用python在excel中找到重复的数据,如何删除下一行?

如果使用python在excel中找到重复的数据,如何删除下一行?
EN

Stack Overflow用户
提问于 2019-09-30 18:23:17
回答 2查看 55关注 0票数 0

如果使用python在excel中找到重复的数据,有人知道如何删除下一行吗?

以下是我的输入数据(输入数据只有2列):

代码语言:javascript
复制
col_1   col_2
1       number 2.37
2       number 2.8
3       number 3.4
4       number 
5       number 
6       number 
7       number 2.62
8       number 3.1
9       number 2.6

如果找到重复的数据,则应从重复的数据开始删除行的其余部分。在这种情况下,上面的输入数据显示第4行到第6行是重复的数据,这意味着检测到重复的数据,直到第9行的列末尾的第4行应该被删除。

因此,输出应该是这样的(输出数据只有2列):

代码语言:javascript
复制
col_1   col_2
1       number 2.37
2       number 2.8
3       number 3.4

这是我的代码:(但我的代码似乎没有达到我的目标)

代码语言:javascript
复制
df = pd.read_excel(path_to_the_file)
df = df[~df.col_1.str.match('number')]
df.to_excel(path_to_the_file)

任何帮助都将不胜感激,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-30 19:16:16

代码语言:javascript
复制
df = pd.read_excel(path_to_the_file)
index=df[df.duplicated(['col_2']) == True].values[0][0]
df2 = df.iloc[:index-2]
print(df2)

output:
   col_1       col_2
0      1  number2.37
1      2   number2.8
2      3   number3.4
票数 1
EN

Stack Overflow用户

发布于 2019-09-30 18:57:25

您所要求的情况(独立于哪个列是哪个或什么‘复制数据’的意思)需要一个循环,因为切片有它自己的方式,它并不意味着是一个迭代函数。但是,在您的问题中,所陈述的内容确实取决于在(“下一行”)某个点上找到的数据。因此,一旦您找到数据被复制的位置(如果确实是这样的话),就应该使用切片。

dataframe.str.match()函数返回一个完整的系列,该系列将告诉您是否对数据文件中的每一行进行匹配。sum函数通过在系列中将强制的布尔值添加到int来获得总匹配。如果有多个匹配(当前行+一个),并且只有到那时,您才能从那时开始分割df。第一行不能重复(第一行不需要检查)。

你想要达到的目标的具体去向可以从这个例子中得到解决。

代码语言:javascript
复制
import pandas as pd

for idx,row in df[1:].iterrows(): 
    if df.col_2.str.match(df.loc[idx].col_2).sum() > 1: 
        print("found at", idx) 
        df = df[:idx] 
        break

请记住,这只是一个开箱即用的示例,不应该使用break,您应该使用elif并显式定义代码的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58173276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档