如何检查多个列中的重复项?

How to check for duplicates across multiple columns?

我有一个看起来像这样的 df:

ID    Lat    Long   geo
4     23     45     xyhj
5     23     12     nil
7     40     32.    kl

如果我想检查一列中的重复项,我可以使用

df['Lat'].is_unique

这会给我 False.

但是是否可以检查是否有任何行同时重复 LatLong 值?对于此数据框,答案将是 True,因为没有 LatLong 的组合重复。

要检查整个数据集中的重复项,您可以使用 df.duplicated().sum()。

您也可以显式写入列名并获取重复值。

你想要pd.DataFrame.duplicated(subset=<list_of_columns>):

import pandas as pd
  
df_original = pd.DataFrame(
    {
        "ID": [4, 5, 7],
        "Lat": [23, 23, 40],
        "Long": [45, 12, 32],
        "geo": ["xyhj", "nil", "kl"],
    }
)
df_duplicated = pd.DataFrame(
    {
        "ID": [4, 5, 7, 8],
        "Lat": [23, 23, 40, 23],
        "Long": [45, 12, 32, 12],
        "geo": ["xyhj", "nil", "kl", "something else"],
    }
)

for df in [df_original, df_duplicated]:
    print(df, "\n", df.duplicated(subset=["Lat", "Long"]).any(), "\n\n")

这会打印

   ID  Lat  Long   geo
0   4   23    45  xyhj
1   5   23    12   nil
2   7   40    32    kl 
 False 


   ID  Lat  Long             geo
0   4   23    45            xyhj
1   5   23    12             nil
2   7   40    32              kl
3   8   23    12  something else 
 True