gpt4 book ai didi

python - 将 2 列与 pandas 中的列表值连接起来(避免重复和 NaN)

转载 作者:行者123 更新时间:2023-12-02 01:48:29 25 4
gpt4 key购买 nike

我的 pandas 数据框如下,

loc_1                               loc_2                             

[mumbai, gujarat, sri lanka] [chennai, UP]
[Goa, telangana] [Kashmir, Goa, Rajkot]
NaN [Bihar, Orissa]

我想创建一个新列,它是上述两列的组合,我确实搜索了其他类似的问题,但我面临的问题是,

当我这样做的时候,

data['locations'] = data['loc_1'] + data['loc_2']

Output
--------
loc_1 loc_2 locations

[mumbai, gujarat, sri lanka] [chennai, UP] [mumbai, gujarat, sri lanka,chennai, UP]
[Goa, telangana] [Kashmir, Goa, Rajkot] [Goa, telangana,Kashmir, Goa, Rajkot]
NaN [Bihar, Orissa] NaN

问题

正如您在上面看到的,存在重复值以及形成的 NaN 值。如何避免它们?

记住

原始数据集包含列表、str 和 NaN 格式的值。

数据集:


loc = pd.DataFrame({
'loc_1': [['mumbai', 'gujarat', 'sri lanka'],['Goa', 'telangana'],np.nan],
'loc_2':[['chennai','UP'],['kashmir','goa','rajkot'],['bihar','orissa']],
'loc_3':['Chennai','Bangalore','Vizag']

})

最佳答案

首先将 NaN( float )替换为空列表:

data['locations'] = data['loc_1'].apply(lambda x: [] if isinstance(x, float) else x) + data['loc_2']

然后通过 dict.fromkeys 转换为字典,删除与原始顺序相同的重复项:

data['locations'] = data['locations'].apply(lambda x: list(dict.fromkeys(x)))

如果顺序不重要,您可以使用一组:

data['locations'] = data['locations'].apply(lambda x: list(set(x)))

关于python - 将 2 列与 pandas 中的列表值连接起来(避免重复和 NaN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70617623/

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