gpt4 book ai didi

python - 如何在 pandas 中按 user_id 按组从列表列中获取唯一值

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:22 29 4
gpt4 key购买 nike

输入:-

    print(df)
device_id           ids
025c08d535a074b4 [8972]
025c08d535a074b4 [10595, 10595]
02612734f96edc43 [10016, 8795, 10019, 8791, 8351, 8791]
02612734f96edc43 [10016, 8795, 10019, 8791, 8351, 10052, 8345]

应该为每个 device_d 输出唯一的 ID 列表,例如:

device_id           ids
025c08d535a074b4 [8972,10595]
02612734f96edc43 [10016, 8795, 10019,8791,8351,10052, 8345]

我尝试使用 :-->

    df=pd.DataFrame(df.groupby('device_id')['ids'].apply(set))

但它无法正常工作,它在 id 之前添加 ' 并返回类似的列表。

device_id           ids
025c08d535a074b4 [8972,'10595, 10595]
02612734f96edc43 ['10016,8795,10019,8791,8351,8791,'10016]

最佳答案

使用numpy.hstacknumpy.unique :

import numpy as np

df.groupby('device_id')['ids'].apply(lambda x: np.unique(np.hstack(x)))

或者如果维护秩序很重要,请使用 pandas.Series构造函数 drop_duplicates :

df.groupby('device_id')['ids'].apply(lambda x: pd.Series(np.hstack(x)).drop_duplicates().to_list())

[输出]

device_id
025c08d535a074b4 [8972, 10595]
02612734f96edc43 [10016, 8795, 10019, 8791, 8351, 10052, 8345]

如果您需要输出为 DataFrame,只需链接 .reset_index :

df.groupby('device_id')['ids'].apply(lambda x: np.unique(np.hstack(x))).reset_index()

[输出]

          device_id                                            ids
0 025c08d535a074b4 [8972, 10595]
1 02612734f96edc43 [8345, 8351, 8791, 8795, 10016, 10019, 10052]

关于python - 如何在 pandas 中按 user_id 按组从列表列中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56788373/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com