2017-06-07 10 views
0

私はendResult dataframe'issuesカラムからデータを取り出し、dfの 'Sprint'カラムに入れようとしています。このコードを実行すると、dfの 'Sprint'列の各行に挿入された 'issues'列の3番目のエントリを持つデータフレームが返されます。パンダでネストされたiterrowsを行う方法

for i, r in endResult.iterrows(): 
    j = endResult['issues'][i]['key'] 
for x, y in df.iterrows(): 
    df['Sprint'][x] = j 

私は何を取得しています:

スプリントを
0 SPGC-9445
1 SPGC-9445
2 SPGC-9445

私は何を取得する必要があります。

Sprint
0 SPGC-14075
1 SP GC-9456
2 SPGC-9445

エントリはjsonを含むendResultデータフレームから取得されます。

          issues 
0 {u'key': u'SPGC-14075', u'fields': {u'status':... 
1 {u'key': u'SPGC-9456', u'fields': {u'status': ... 
2 {u'key': u'SPGC-9445', u'fields': {u'status': ... 
+0

出力を期待されるサンプルデータを、追加してください。.. – Satyadev

+0

私はそれを編集しました。他に何かを追加する必要があることを教えてください。 – jenkelblankel

答えて

0

あなたが最初のループでjにすべてを割り当てているので、あなたは、各ループにこの値を上書きします。次に、スプ​​リントの各値をjという値に割り当てます。これは最後の値がissuesになります。

これを修正する簡単な変更の1つは、jをリストに変更し、ループしながら各値を追加することです。作成したばかりのリストから列を作ることができるので、これはまた、第二のループを排除します。

import pandas as pd 

endResult = pd.DataFrame({'issues' : [{'key': 1},{'key': 2},{'key': 3}]}) 
df = pd.DataFrame() 

j = [] 
for i, r in endResult.iterrows(): 
    j.append(endResult['issues'][i]['key']) 

df['Sprint'] = j 
+0

これは非常にうまくいった!私はあなたがリストから列を外すことができたことを知らなかった。それはまだその時点でパンダシリーズですか?私は列を意味する。 – jenkelblankel

+0

'j'はリストで、' df ['Sprint'] 'はパンダシリーズ(通常どんな列です)です。この回答が役に立ちましたら、それを受け入れるためにチェックマークをクリックしてください – Kewl

関連する問題