有一个大的数据文件,在这里我需要移除行中的陷阱。我使用groupby对ID进行分组,然后将12列的值添加到列表中。我需要的最后一步是删除列表中的重复值。
我知道set()将删除传统列表中的陷阱,但我不确定这在我的groupby中是否有效,或者是否有更好的方法。
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]
发布于 2019-05-09 12:25:02
我相信您需要set在lambda函数和集合理解:
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 - 文档
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)https://stackoverflow.com/questions/56059347
复制相似问题