2017-09-10 10 views
-1

私はリストを含む列を持つデータフレームを持っています。 I want to A)リストの一意の値をすべて検索する B)uniquevalueを含むデータフレーム行のインデックスに対応するインデックス{uniqueVue:[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 

答えて

0

私はあなたが使用することができると思う:

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'] 
関連する問題