【问题标题】:Drop a row from Pandas Dataframe when any of the columns are duplicate当任何列重复时,从 Pandas Dataframe 中删除一行
【发布时间】:2020-12-17 13:43:23
【问题描述】:

我有一个包含许多问题答案的数据框。

每一行代表一个回答者,列是给定问题的答案 因为人们经常向这些调查问卷发送垃圾邮件,所以有时有些回答者会多次给出相同的答案,例如“很好”、“很好”......

我想删除那些重复多次相同答案的行(因为一次重复可能是巧合)

我的数据框如下所示:问题因文件而异,但第 0 列始终是 ID,其余所有列都是问题,其数量各不相同。

ID , 问题 1 , 问题 2 , 问题 3 , 问题 4 , ...

Id1,回答。 str1,答。字符串2,答。 string3 ,答。字符串 4 , ...

Id2 ,答案。 str1,答。字符串2,答。 string3 ,答。字符串 4 , ...

Id3 ,答案。 str1,答。字符串2,答。 string3 ,答。字符串 4 , ...

Id4 ,答案。 str1,答。字符串2,答。 string3 ,答。字符串 4 , ...

我需要删除包含多个问题相同答案的行 理想情况下,我希望能够调整找到的相同答案的数量,以便删除一行。因为当您有大量问卷时,2 个答案可能相同,而不会成为垃圾邮件发送者。如果这种情况不容易,让我们尝试在任何 2 相同时删除。

【问题讨论】:

  • 嗨,普洛斯!您能否在您的问题中添加示例输入和输出。这将极大地帮助人们提供解决方案

标签: python pandas rows drop


【解决方案1】:
# importing pandas package 
import pandas as pd 

data = {'ID':  ['Id1', 'Id2','Id3', 'Id4'],
        'Question 1':  ['Ans. str1', 'Ans. string1','Ans. string1', 'Ans. string1'],
        'Question 2':  ['Ans. str2', 'Ans. string2','Ans. string2', 'Ans. string2'],
        'Question 3':  ['Ans. str3', 'Ans. string3','Ans. string3', 'Ans. string3'],
        'Question 4':  ['Ans. str4', 'Ans. string4','Ans. string4', 'Ans. string4']
       }
        
        
df = pd.DataFrame (data)        
    

输出

    ID  Question 1  Question 2  Question 3  Question 4
0   Id1     Ans. str1   Ans. str2   Ans. str3   Ans. str4
1   Id2     Ans. string1    Ans. string2    Ans. string3    Ans. string4
2   Id3     Ans. string1    Ans. string2    Ans. string3    Ans. string4
3   Id4     Ans. string1    Ans. string2    Ans. string3    Ans. string4

删除重复的行

df = df.drop_duplicates()
print(df)

    ID Question 1 Question 2 Question 3 Question 4
0  Id1  Ans. str1  Ans. str2  Ans. str3  Ans. str4

【讨论】:

  • 谢谢约翰,但我不想删除重复项,我需要删除包含多个问题的相同答案的行
  • 我改了答案你的意思是这样吗?
  • 感谢您的尝试,但我不会将重复项的比较放在列的元素中,而是在一行中。我还对问题进行了一些编辑,以使其更具解释性。它有帮助吗?对于 Ans 的任何行。 stringX 在这一行中存在不止一次我希望删除这一行。
猜你喜欢
  • 2018-05-01
  • 2012-09-25
  • 2017-10-24
  • 2018-05-29
  • 2016-05-05
  • 2020-02-10
相关资源
最近更新 更多