2017-12-08 10 views
2

から文字列でデータフレームの列のリストを比較し、更新パンダ:Linked_To欄のIDの私はパンダのデータフレームを持っている別の列

+--------+---------+------+----------------+ 
| Name | Address | ID | Linked_To | 
+--------+---------+------+----------------+ 
| Name A | ABC  | 1233 | 1234;1235  | 
| Name B | DEF  | 1234 | 1233;1236;1237 | 
| Name C | GHI  | 1235 | 1234;1233;2589 | 
+--------+---------+------+----------------+ 

一部は、[名前]列の下で、レコードです。辞書を作成し、Linked_To列のデータをリストとして渡すことができます。しかし、私はどのように進むべきかは不明です。

+--------+---------+------+-------------------------+ 
| Name | Address | Id |  Linked To  | 
+--------+---------+------+-------------------------+ 
| Name A | ABC  | 1233 | Name B;Name C   | 
| Name B | DEF  | 1234 | Name A;Name D; Name E | 
| Name C | HIJ  | 1235 | Name B;Name A; None  | 
+--------+---------+------+-------------------------+ 
+0

あなたの名前1と名称Aはどのように関係しない理想的には私は何かのようにご覧になりたいですか?これら2つのデータフレームは関連していますか? –

+0

@ScottBoston分かりやすくするためにテーブルを編集しました。名前A =名前1.私はそれに応じて上記を編集しました。 –

答えて

1

いくつかのループせずにこれを行うには厳しいようだ:

linked = df.Linked_To.str.split(';') 

def pull_name(iden): 
    try: 
     return df[df.ID == int(iden)].Name.iat[0] 
    except: 
     return str(None) 

res = linked.apply(lambda ids: '; '.join([pull_name(i) for i in ids])) 

print(res) 
0   Name B; Name C 
1  Name A; None; None 
2 Name B; Name A; ... 
Name: Linked_To, dtype: object 
関連する問題