【问题标题】:Iterating over rows to add items to dictionary遍历行以将项目添加到字典
【发布时间】:2017-09-10 18:02:44
【问题描述】:

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

我已经完成了 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

【问题讨论】:

    标签: python pandas dictionary


    【解决方案1】:

    我认为你可以使用:

    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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多