迭代行以将项添加到字典

2024-04-23 23:59:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含列表的列的数据帧。我想 A) 查找列表的所有唯一值 B) 制作一个格式为{uniquevalue:[indexA,indexB,…]}的字典,其中索引对应于包含uniquevalue的dataframe行的索引。你知道吗

我已经完成了A,但是我的B代码创建了一个字典,它只包含所有索引,不管它们是否包含在行中。你能帮忙吗?你知道吗

import pandas as pd


df = pd.read_excel(io = 'links.xlsx')

unique_list = []
for row in df['relevant_links']:
    row_list = row.split(sep = ', ')
    unique_list.extend(row_list)

unique_set = set(unique_list)

unique_dict = dict.fromkeys(unique_set, [])

print(unique_dict.keys())

row_idx = 0
for row in df['relevant_links']:            
    [unique_dict[i].append(row_idx) for i in str(row).split(', ') if i in unique_dict]
    row_idx += 1

Tags: indf列表for字典linksdictlist
1条回答
网友
1楼 · 发布于 2024-04-23 23:59:13

我想你可以用:

df = pd.DataFrame({'relevant_links':['a, c, v','a, r, e','e, t','e, r']})
print (df)
  relevant_links
0        a, c, v
1        a, r, e
2           e, t
3           e, r

#create Series 
s = df['relevant_links'].str.split(', ', expand=True).stack()
#groupby by unique links, create list and then dict
unique_dict = s.reset_index(name='val').groupby('val')['level_0'].apply(list).to_dict()
print (unique_dict)
{'v': [0], 't': [2], 'r': [1, 3], 'e': [1, 2, 3], 'a': [0, 1], 'c': [0]}

unique_set = s.unique().tolist()
print (unique_set)
['a', 'c', 'v', 'r', 'e', 't']

相关问题 更多 >