熊猫将重复的行拖放到另一个数据框

时间:2019-10-07 14:10:02

标签: python python-3.x pandas

这是数据示例:

import pandas as pd
df = pd.DataFrame({
    'file': ['file1','file2','file1','file2','file3','file3','file4','file5','file4','file5'],
    'prop1': ['True','False','True','False','False','False','False','True','False','False'],
    'prop2': ['False','False','False','False','True','False','True','False','True','False'],
    'prop3': ['False','True','False','True','False','True','False','False','False','True']
})

file    prop1   prop2   prop3
0   file1   True    False   False
1   file2   False   False   True
2   file1   True    False   False
3   file2   False   False   True
4   file3   False   True    False
5   file3   False   False   True
6   file4   False   True    False
7   file5   True    False   False
8   file4   False   True    False
9   file5   False   False   True

我需要将具有相同props值的重复行拖放到另一个数据框中,并从原始文件中删除它们。
因此,另一个数据框应如下所示(重复的行不应重复):

file    prop1   prop2   prop3
0   file1   True    False   False
3   file2   False   False   True
8   file4   False   True    False

df = df.drop_duplicates()在1个重复的行上拖放,但不是第二个这样的行:

    file    prop1   prop2   prop3
0   file1   True    False   False
1   file2   False   False   True
4   file3   False   True    False
5   file3   False   False   True
6   file4   False   True    False
7   file5   True    False   False
9   file5   False   False   True

2 个答案:

答案 0 :(得分:1)

使用DataFrame.drop_duplicates来指定列名称,方法是选择-所有列均不包含第一个:

df = df.drop_duplicates(df.columns[1:])

或在列名中包含prop的列:

df = df.drop_duplicates(df.filter(like='prop').columns)

print (df)
    file  prop1  prop2  prop3
0  file1   True  False  False
1  file2  False  False   True
4  file3  False   True  False

答案 1 :(得分:0)

uniques = df.drop_duplicates()
duplicates = df.iloc[list(set(df.index) - set(uniques.index))]

您可以先使用pandas方法drop_duplicates()创建仅包含唯一行的数据框。然后,您可以将原始数据框的索引与框架中具有唯一行的索引进行比较,“删除”索引是您的重复行,您可以从原始数据帧中再次复制它们,以便现在拥有唯一行和重复行分开的。