我试图删除列duplicates
中的重复项,只保留列name
中的值等于“foo”的记录。有没有比我的方法更好的方法?
import pandas as pd
df = pd.DataFrame(
{"name": ["foo", "bar", "foo", "baz"], "duplicates": ["qux", "qux", "fred", "fred"]}
)
df["name"] = df["name"].map({"foo": "a"})
df.sort_values(["name", "duplicates"], inplace=True, ascending=True)
df.drop_duplicates("duplicates")
2条答案
按热度按时间uajslkp61#
如果不匹配
foo
,如果duplicates
的每个组不存在,您的解决方案中还需要值,对吗?然后,解决方案是将
DataFrameGroupBy.idxmax
用于每组的第一个True
,msk用于比较foo
-如果不存在,则获取第一个False
值:093gszye2#
IIUC,你原来的df是
输出为
| | 姓名|重复|
| - ------|- ------|- ------|
| 无|富|古克斯|
| 1个|棒|古克斯|
| 第二章|富|弗雷德|
| 三个|巴兹|弗雷德|
这个怎么样?
所以你会得到
| | 姓名|重复|
| - ------|- ------|- ------|
| 无|富|古克斯|
| 第二章|富|弗雷德|