这是数据示例:
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
答案 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()
创建仅包含唯一行的数据框。然后,您可以将原始数据框的索引与框架中具有唯一行的索引进行比较,“删除”索引是您的重复行,您可以从原始数据帧中再次复制它们,以便现在拥有唯一行和重复行分开的。