如果使用python在excel中发现重复数据,如何删除以下行?
如果使用python在excel中发现重复数据,是否有人知道如何删除以下行 这是我的输入数据。输入数据只有两列:如果使用python在excel中发现重复数据,如何删除以下行?,python,excel,pandas,duplicates,Python,Excel,Pandas,Duplicates,如果使用python在excel中发现重复数据,是否有人知道如何删除以下行 这是我的输入数据。输入数据只有两列: 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 如果发现重复数据,则应从重复
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行是重复数据,这意味着检测到重复数据,应删除第4行,直到列的末尾,即第9行
因此,输出应如下所示:输出数据只有两列:
col_1 col_2
1 number 2.37
2 number 2.8
3 number 3.4
这是我的代码:但我的代码似乎没有达到我的目标
df = pd.read_excel(path_to_the_file)
df = df[~df.col_1.str.match('number')]
df.to_excel(path_to_the_file)
任何帮助都将不胜感激,谢谢 您所要求的独立于哪列或“重复数据”的含义的情况需要一个循环,因为切片有自己的方式,它并不意味着是一个迭代函数。你们在问题中所陈述的内容取决于在下一行某个点上找到的数据。因此,一旦发现数据在何处重复(如果确实重复),就应该使用切片 函数返回一个完整的序列,该序列告诉您数据帧中的每一行是否匹配。sum函数通过将强制布尔值添加到序列中的int来获取总匹配项。如果有多个匹配当前行+一,并且只有在该行+一时,才可以从该行开始切片df。第一行不能与第一行重复,无需检查 从这个例子中,你可以知道你想要达到的目标的具体去向
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并明确定义代码的行为。df=pd.read\u excelpath\u to\u文件
index=df[df.duplicated['col_2']==True]。值[0][0]
df2=df.iloc[:index-2]
打印DF2
输出:
第1列第2列
0 1数字2.37
1 2数字2.8
2 3数字3.4
您的数据帧在呈现时不清楚。这些数字是否在col_1索引中?或者是专栏,就像它看起来的那样。第2列是否包含“编号2.37”或编号是否在第2列之外?重复数据是什么意思,行中的数据?在同一列?根据您的解释,从技术上讲,第5行是第一个副本,第4行仍然是唯一的。连同号码。更详细一点,有不同的解释方式。@MikeMajara,很抱歉我的解释不好,col_1中的数字只显示col_2有多少行,col_2包含“数字2.37”,重复的数据表示同一列中的行中的数据。是的,你是对的,第5行是第一个重复,第4行仍然是唯一的。但是,我想删除第4行、第5行、第6行、第7行、第8行和第9行。提供的答案被标记为低质量帖子供审查。提供的答案可能是正确的,但可以从解释中获益。只有代码的答案不被认为是好答案。以下是一些指导原则。来自。@misha,谢谢你的回答,我会稍后再试,谢谢!谢谢你的回答,我以后再试试。顺便问一下,您的意思是要替换elif还是显式地使用break?