如何检查多个列中的重复项?
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
.
但是是否可以检查是否有任何行同时重复 Lat
和 Long
值?对于此数据框,答案将是 True
,因为没有 Lat
和 Long
的组合重复。
要检查整个数据集中的重复项,您可以使用 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
我有一个看起来像这样的 df:
ID Lat Long geo
4 23 45 xyhj
5 23 12 nil
7 40 32. kl
如果我想检查一列中的重复项,我可以使用
df['Lat'].is_unique
这会给我 False
.
但是是否可以检查是否有任何行同时重复 Lat
和 Long
值?对于此数据框,答案将是 True
,因为没有 Lat
和 Long
的组合重复。
要检查整个数据集中的重复项,您可以使用 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