首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python中的groupby删除list中的dups?

如何用Python中的groupby删除list中的dups?
EN

Stack Overflow用户
提问于 2019-05-09 12:22:35
回答 1查看 45关注 0票数 1

有一个大的数据文件,在这里我需要移除行中的陷阱。我使用groupby对ID进行分组,然后将12列的值添加到列表中。我需要的最后一步是删除列表中的重复值。

我知道set()将删除传统列表中的陷阱,但我不确定这在我的groupby中是否有效,或者是否有更好的方法。

代码语言:javascript
复制
import pandas as pd

df = pd.read_csv("Test.csv")

grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(lambda 
x: x.values.tolist())

当前,您可以看到dup“包括句柄”

us_7493577 [[不可溅电池],可通过空运.

us_7493578 [[不可溅电池],可通过空运.

us_7493586 [包括句柄,包括句柄,nan]

我正在寻找的结果

us_7493577 [[不可溅电池],可通过空运.

us_7493578 [[不可溅电池],可通过空运.

us_7493586 [包括句柄,nan]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 12:25:02

我相信您需要set在lambda函数和集合理解:

代码语言:javascript
复制
f = lambda x: set([z for y in x.values for z in y])
grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(f)

如果需要,还可以通过比较z == z来筛选丢失的值,因为np.nan != np.nan - 文档

代码语言:javascript
复制
f = lambda x: set([z for y in x.values for z in y if z == z])
grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(f)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56059347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档