Rus*_*rdt 6 python duplicates pandas
drop_duplicatesPandas DataFrame 的方法在删除重复行时会考虑所有列(默认)或列子集(可选),并且不能考虑重复索引。
我正在寻找一种干净的单行解决方案,该方案在确定重复行时会考虑索引以及子集或所有列。例如,考虑DataFrame
df = pd.DataFrame(index=['a', 'b', 'b', 'c'], data={'A': [0, 0, 0, 0], 'B': [1, 0, 0, 0]})
A B
a 0 1
b 0 0
b 0 0
c 0 0
Run Code Online (Sandbox Code Playgroud)
默认使用的drop_duplicates方法给出
df.drop_duplicates()
A B
a 0 1
b 0 0
Run Code Online (Sandbox Code Playgroud)
如果在确定重复行时也考虑了索引,则结果应为
df.drop_duplicates(consider_index=True) # not a supported keyword argument
A B
a 0 1
b 0 0
c 0 0
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以提供此功能,这比我目前的方法要好:
df['index'] = df.index
df.drop_duplicates(inplace=True)
del df['index']
Run Code Online (Sandbox Code Playgroud)
调用reset_index和duplicated,然后为原始索引:
df = df[~df.reset_index().duplicated().values]
print (df)
A B
a 0 1
b 0 0
c 0 0
Run Code Online (Sandbox Code Playgroud)
尝试这个:
df.reset_index().drop_duplicates().set_index('[name_of_your_index_here]')
Run Code Online (Sandbox Code Playgroud)
[输出]
A B
index
a 0 1
b 0 0
c 0 0
Run Code Online (Sandbox Code Playgroud)