pandas 丢掉 dataframe 中重复的行
本教程介绍了如何使用 dataframe.drop_duplicates()
方法从 pandas dataframe 中删除所有重复的行。
dataframe.drop_duplicates()
语法
dataframe.drop_duplicates(subset=none, keep="first", inplace=false, ignore_index=false)
它返回一个 dataframe,删除 dataframe 中所有重复的行。
使用 dataframe.drop_duplicates()
方法删除重复的行
import pandas as pd
df_with_duplicates = pd.dataframe(
{
"id": [302, 504, 708, 103, 303, 302],
"name": ["watch", "camera", "phone", "shoes", "watch", "watch"],
"cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates()
print("dataframe with duplicates:")
print(df_with_duplicates, "\n")
print("dataframe without duplicates:")
print(df_without_duplicates, "\n")
输出:
dataframe with duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
4 303 watch 300
5 302 watch 300
dataframe without duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
4 303 watch 300
它会删除所有列的所有值都相同的行。默认情况下,dataframe 中每一列都有相同值的行才被认为是重复的。在 df_with_duplicates
dataframe 中,第一行和第五行对所有列都有相同的值,所以第五行被删除。
设置 subset
参数以仅基于特定列删除重复项
import pandas as pd
df_with_duplicates = pd.dataframe(
{
"id": [302, 504, 708, 103, 303, 302],
"name": ["watch", "camera", "phone", "shoes", "watch", "watch"],
"cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["name"])
print("dataframe with duplicates:")
print(df_with_duplicates, "\n")
print("dataframe without duplicates:")
print(df_without_duplicates, "\n")
输出:
dataframe with duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
4 303 watch 300
5 302 watch 300
dataframe without duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
在这里,我们将 name
作为 subset
参数传给 drop_duplicates()
方法。第四行和第五行被删除,因为它们的 name
列的值与第一列相同。
在 drop_duplicates()
方法中设置 keep='last'
import pandas as pd
df_with_duplicates = pd.dataframe(
{
"id": [302, 504, 708, 103, 303, 302],
"name": ["watch", "camera", "phone", "shoes", "watch", "watch"],
"cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["name"], keep="last")
print("dataframe with duplicates:")
print(df_with_duplicates, "\n")
print("dataframe without duplicates:")
print(df_without_duplicates, "\n")
输出:
dataframe with duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
4 303 watch 300
5 302 watch 300
dataframe without duplicates:
id name cost
1 504 camera 400
2 708 phone 350
3 103 shoes 100
5 302 watch 300
它删除了所有的行,除了最后一行与 name
列值相同的行。
我们设置 keep=false
来删除任何一列中具有相同值的所有行。
import pandas as pd
df_with_duplicates = pd.dataframe(
{
"id": [302, 504, 708, 103, 303, 302],
"name": ["watch", "camera", "phone", "shoes", "watch", "watch"],
"cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["name"], keep=false)
print("dataframe with duplicates:")
print(df_with_duplicates, "\n")
print("dataframe without duplicates:")
print(df_without_duplicates, "\n")
输出:
dataframe with duplicates:
id name cost
0 302 watch 300
1 504 camera 400
2 708 phone 350
3 103 shoes 100
4 303 watch 300
5 302 watch 300
dataframe without duplicates:
id name cost
1 504 camera 400
2 708 phone 350
3 103 shoes 100
它删除了第一、五、六行,因为它们的 name
列都有相同的值。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
pandas dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串