の値に基づいて、パンダのデータフレームの列に辞書を追加する:は、私はこれに似たパンダのデータフレームを持っている辞書
import pandas as pd
members = [('Chicago', 'IL', '1058'), ('New York', 'NY', '3425'),
('St. Louis', 'MO', '8854')]
labels = ['City', 'State', 'member_id']
df = pd.DataFrame.from_records(members, columns = labels)
City State member_id
0 Chicago IL 1058
1 New York NY 3425
2 St. Louis MO 8854
私も、これと同様のデータフレームよりも短くなっている辞書のリストを、持っています:
リストにある辞書を、idに基づいて 'new_col'というデータフレーム内の新しい列に挿入したいとします。この場合、辞書の 'id'はデータフレームの 'member_id'に関連します。さらに、出力には辞書を追加した行のみが含まれている必要があります。
期待される出力は、このようなものになるだろう:私はちょうどそれらの値を持つ新しいデータフレームを作成しようとした
City State member_id new_col
0 Chicago IL 1058 {'name':'Tom', 'age':'37', 'id':'1058'}
1 New York NY 3425 {'name':'Sue', 'age':'24', 'id':'3425'}
が、二つを接続するために見えることはできません。私はので、シリーズと互換性のないインデクサーを、私はそれについて心配していない:それはとValueErrorを発生させ
df['new_col'] = None
for key, value in df['member_id'].iteritems():
for n in x:
id = str(n['id'])
if id == str(value):
df.loc[key, 'new_col'] = n
df = df[(df['new_col'] != None)]
:私はまた、新しい列を追加し、その後濾過される、反復することにより、辞書を追加しようとしました私の全体的なアプローチが間違っていると思います。 forループ内のループよりも簡単な方法が必要です。特に、これは非常に大きなデータセットです。これを達成する最もクリーンな方法は何ですか?
私のデータは実際にmember_idを文字列として持っていましたが、それはint()を取り出して簡単に修正できました。あなたは何時間もの苦しみを終わらせました。ありがとうございました! – mightyoscar