gpt4 book ai didi

python - 如何使用 pandas 中的列表和索引之间的比较来删除列表中的项目?

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:20 25 4
gpt4 key购买 nike

这是我的数据框:

Cites_Dogs  Dog_Number
DOG45555 DOG123
DOG127 DOG123
DOG7760 DOG126
DOG45 DOG126
DOG559 DOG126
DOG760 DOG126
DOG123 DOG127
DOG789 DOG127
DOG860 DOG127

我已经通过这段代码转换为列表:

all_cites_dog = all_cites_dog.groupby('Dog_Number')['Cites_Dogs'].apply(list)

我想删除列表中与索引 DOG123DOG126DOG127 不匹配的项目。

DOG123   [ 'DOG45555' ,  'DOG127']
DOG126 [ 'DOG7760', 'DOG456' , 'DOG559' , 'DOG760']
DOG127 [ 'DOG123' , 'DOG789' , 'DOG860']

我希望看到这样的结果:

DOG123   [ 'DOG127']
DOG126 ['']
DOG127 [ 'DOG123']

我应该怎么办?

最佳答案

您可以遵循大致的步骤:

  1. 根据 Cites_Dogs 过滤您的数据框。
  2. 使用 list 执行您的 groupby + apply
  3. 根据唯一的狗编号重新索引您的数据框。
  4. NaN 值替换为空列表以保持一致性。

这是一个演示:

unq_dogs = df['Dog_Number'].unique()

res = df.loc[df['Cites_Dogs'].isin(unq_dogs]\
.groupby('Dog_Number')['Cites_Dogs'].apply(list)\
.reindex(unq_dogs)\
.fillna(pd.Series([[] for _ in range(len(unq_dogs))], index=unq_dogs))\
.reset_index()

print(res)

Dog_Number Cites_Dogs
0 DOG123 [DOG127]
1 DOG126 []
2 DOG127 [DOG123]

关于python - 如何使用 pandas 中的列表和索引之间的比较来删除列表中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866375/

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