Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将重复项拆分为单独的表-字段_Python_Pandas_Dataframe_Duplicates - Fatal编程技术网

Python 将重复项拆分为单独的表-字段

Python 将重复项拆分为单独的表-字段,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,在Pandas中,我可以使用 data.drop_duplicates('foo') 指挥部。我想知道是否有一种方法可以在另一个表中捕获这些数据以供独立审查。您可以调用foo列上的duplicated方法,然后根据它对原始数据框进行子集划分,如下所示: data.loc[data['foo'].duplicated(), :] 例如: data = pd.DataFrame({'foo': [1,1,1,2,2,2], 'bar': [1,1,2,2,3,3]}) data # b

在Pandas中,我可以使用

data.drop_duplicates('foo')

指挥部。我想知道是否有一种方法可以在另一个表中捕获这些数据以供独立审查。

您可以调用
foo
列上的
duplicated
方法,然后根据它对原始数据框进行子集划分,如下所示:

data.loc[data['foo'].duplicated(), :]
例如:

data = pd.DataFrame({'foo': [1,1,1,2,2,2], 'bar': [1,1,2,2,3,3]})    
data

# bar foo
#0  1   1
#1  1   1
#2  2   1
#3  2   2
#4  3   2
#5  3   2


data.loc[data['foo'].duplicated(), :]
# bar foo
#1  1   1
#2  2   1
#4  3   2
#5  3   2
有一个伴随的方法。他们都有相似的观点

主要论点如下:

  • 子集
    -列标签或标签序列
      只考虑某些列来标识重复,默认情况下使用所有列
  • 保留
    -{
    'first'
    'last'
    },默认值
    'first'
keep
设置为
'first'
时:

  • drop\u duplicates
    返回一个数据帧,其中由
    subset
    指定的列组合的第一个匹配项保留在该数据帧中,其余的保留在该数据帧中
  • duplicated
    返回一个布尔掩码,该掩码的索引与原始数据帧的索引相同,对于指定列集的所有重复组合(除了
    'first'
    之外),其值均为True。您可以使用此掩码获取要删除的行或其补码(与删除重复项相同)
例子

请注意,与
'b'
的第一个实例对应的行是
False
,而第二个实例是
True
,表示要删除它

答复


keep='last'
keep=False
下面是将
keep
参数设置为
'last'
False

删除重复项

这一次,第一个实例为
True
表示要删除,而第二个实例为
False
表示不删除

只有重复项

删除重复项

这一次,两个实例都是
True
,并且都被删除

只有重复项

df = pd.DataFrame(list('abcdbef'), columns=['letter'])
df
df.drop_duplicates(keep='first')  # same as default
df.duplicated(keep='first')  # same as default

0    False
1    False
2    False
3    False
4     True
5    False
6    False
dtype: bool
df[df.duplicated(keep='first')]
df.drop_duplicates(keep='last')
df.duplicated(keep='last')

0    False
1     True
2    False
3    False
4    False
5    False
6    False
dtype: bool
df[df.duplicated(keep='last')]
df.drop_duplicates(keep=False)
df.duplicated(keep=False)

0    False
1     True
2    False
3    False
4     True
5    False
6    False
dtype: bool
df[df.duplicated(keep=False)]