在 pandas 中如何使用 drop_duplicates 只有一个例外?
In pandas how to use drop_duplicates with one exception?
在 python 3 和 pandas 中,我需要通过在列中重复值来消除数据框中的重复行。为此,我使用了:
consolidado = df_processos.drop_duplicates(['numero_unico'], keep='last')
"numero_unico" 列具有字符串格式的代码,例如 0029126-45.2019.1.00.0000、0026497-98.2019.1.00.0000、0027274-83.2019.1.00.0000...
所以上面的命令只保留找到的最后一个字符串代码出现
请问有人知道如何使用 drop_duplicates 吗?
但列内容并不总是字符串代码。在几行中出现内容 "Sem número único"
而且我想保留存在此异常的所有行。但是使用上面的命令生成的数据框只保留最后一次出现 "Sem número único"
pandas drop_duplicates
中没有任何参数可以使用,但是您可以通过将 DataFrame
分成两部分(有 "Sem número único" 和没有),然后在去重后重新连接在一起。因此:
tmp_df1 = df_processos[df_processos['numero_unico']=="Sem número único"]
tmp_df2 = df_processos[df_processos['numero_unico']!='Sem número único']
tmp_df2 = tmp_df2.drop_duplicates(['numero_unico'], keep='last')
new_df = pd.concat([tmp_df1, tmp_df2])
我对 OP 的评论中的示例,
df = pandas.DataFrame({
'a': ['snu', 'snu', '002', '002', '003', '003'],
'b': [1, 2, 2, 1, 5, 6]
})
df_dedupe = pandas.concat([
df[df['a']=='snu'],
df[df['a']!='snu'].drop_duplicates(['a'], keep='last')
])
与其他答案类似,但在一个使用 duplicated() 方法的多行命令中:
consolidado = df_processos[
df_processos['numero_unico'] == "Sem número único" |
~df_processos[df_processos['numero_unico'] != "Sem número único"].duplicated(
subset='numero_unico', keep='last'
)
]
Link
在 python 3 和 pandas 中,我需要通过在列中重复值来消除数据框中的重复行。为此,我使用了:
consolidado = df_processos.drop_duplicates(['numero_unico'], keep='last')
"numero_unico" 列具有字符串格式的代码,例如 0029126-45.2019.1.00.0000、0026497-98.2019.1.00.0000、0027274-83.2019.1.00.0000...
所以上面的命令只保留找到的最后一个字符串代码出现
请问有人知道如何使用 drop_duplicates 吗?
但列内容并不总是字符串代码。在几行中出现内容 "Sem número único"
而且我想保留存在此异常的所有行。但是使用上面的命令生成的数据框只保留最后一次出现 "Sem número único"
pandas drop_duplicates
中没有任何参数可以使用,但是您可以通过将 DataFrame
分成两部分(有 "Sem número único" 和没有),然后在去重后重新连接在一起。因此:
tmp_df1 = df_processos[df_processos['numero_unico']=="Sem número único"]
tmp_df2 = df_processos[df_processos['numero_unico']!='Sem número único']
tmp_df2 = tmp_df2.drop_duplicates(['numero_unico'], keep='last')
new_df = pd.concat([tmp_df1, tmp_df2])
我对 OP 的评论中的示例,
df = pandas.DataFrame({
'a': ['snu', 'snu', '002', '002', '003', '003'],
'b': [1, 2, 2, 1, 5, 6]
})
df_dedupe = pandas.concat([
df[df['a']=='snu'],
df[df['a']!='snu'].drop_duplicates(['a'], keep='last')
])
与其他答案类似,但在一个使用 duplicated() 方法的多行命令中:
consolidado = df_processos[
df_processos['numero_unico'] == "Sem número único" |
~df_processos[df_processos['numero_unico'] != "Sem número único"].duplicated(
subset='numero_unico', keep='last'
)
]
Link