Drop_duplicates无法删除完全匹配?

时间:2020-05-26 18:12:17

标签: python pandas dataframe

我正在扫描导入数据中的重复行,并且正在使用pd.duplicated&pd.drop_duplicates查找并删除重复行。我有一组似乎完全相同的行。以前,列的排列顺序不同,但是我合并了数据,问题仍然存在。

编辑:我应该注意到我的数据是float / str混合的,所以我不能使用numpy方法。我希望该解决方案能够适应可变数量的列,因此我无法手动对其重新排序。

drop_duplicates未标记的两行示例:

Datetime               2019-09-05 17:36:38
Site Name                      glacier hut
Chlorophyll RFU                       0.81
Chlorophyll ug/L                      2.93
Cond µS/cm                          2593.8
fDOM QSU                             76.75
fDOM RFU                             24.79
nLF Cond µS/cm                      3061.3
ODO % sat                             78.6
ODO % local                           78.6
ODO mg/L                              7.44
ORP mV                               196.9
Sal psu                               1.58
SpCond µS/cm                          3024
BGA PC RFU                            -0.1
BGA PC ug/L                           -0.1
TDS mg/L                              1966
Turbidity FNU                        19.49
TSS mg/L                                 0
Wiper Position volt                  1.211
pH                                    4.41
pH mV                                149.2
Temp °C                             17.553
Battery V                              5.9
Cable Pwr V                              0
sonde_id                         19E100810
field_monitor                            0
Datetime               2019-09-05 17:36:38
Site Name                      glacier hut
Chlorophyll RFU                       0.81
Chlorophyll ug/L                      2.93
Cond µS/cm                          2593.8
fDOM QSU                             76.75
fDOM RFU                             24.79
nLF Cond µS/cm                      3061.3
ODO % sat                             78.6
ODO % local                           78.6
ODO mg/L                              7.44
ORP mV                               196.9
Sal psu                               1.58
SpCond µS/cm                          3024
BGA PC RFU                            -0.1
BGA PC ug/L                           -0.1
TDS mg/L                              1966
Turbidity FNU                        19.49
TSS mg/L                                 0
Wiper Position volt                  1.211
pH                                    4.41
pH mV                                149.2
Temp °C                             17.553
Battery V                              5.9
Cable Pwr V                              0
sonde_id                         19E100810
field_monitor                            0

两者的dtype也相同。

Datetime               datetime64[ns]
Site Name                      object
Chlorophyll RFU               float64
Chlorophyll ug/L              float64
Cond µS/cm                    float64
fDOM QSU                      float64
fDOM RFU                      float64
nLF Cond µS/cm                float64
ODO % sat                     float64
ODO % local                   float64
ODO mg/L                      float64
ORP mV                        float64
Sal psu                       float64
SpCond µS/cm                  float64
BGA PC RFU                    float64
BGA PC ug/L                   float64
TDS mg/L                      float64
Turbidity FNU                 float64
TSS mg/L                      float64
Wiper Position volt           float64
pH                            float64
pH mV                         float64
Temp °C                       float64
Battery V                     float64
Cable Pwr V                   float64
sonde_id                       object
field_monitor                 float64
Datetime               datetime64[ns]
Site Name                      object
Chlorophyll RFU               float64
Chlorophyll ug/L              float64
Cond µS/cm                    float64
fDOM QSU                      float64
fDOM RFU                      float64
nLF Cond µS/cm                float64
ODO % sat                     float64
ODO % local                   float64
ODO mg/L                      float64
ORP mV                        float64
Sal psu                       float64
SpCond µS/cm                  float64
BGA PC RFU                    float64
BGA PC ug/L                   float64
TDS mg/L                      float64
Turbidity FNU                 float64
TSS mg/L                      float64
Wiper Position volt           float64
pH                            float64
pH mV                         float64
Temp °C                       float64
Battery V                     float64
Cable Pwr V                   float64
sonde_id                       object
field_monitor                 float64

1 个答案:

答案 0 :(得分:0)

您的数据框中是否存在任何相似的行,如果没有重复的方法,则对于exp相同行的第二次出现将返回true:

df = pd.DataFrame([[1,2,3],[2,3,4],[3,4,5],[1,2,3]],columns = ["a","b","c"]) 

df.duplicated()

0    False
1    False
2    False
3     True
dtype: bool

编辑:您必须考虑drop_duplicates()方法不会编辑原始数据框,它会返回其副本,因此您必须手动分配它。

df = df.drop_duplicates() 

您还可以为测试特殊列(例如->

)提供提示
df = df.drop_duplicates(subset=['sonde_id','..','...etc'],keep='last')