[英]How to do nested iterrows in Pandas
我正在嘗試從endResult數據框的“問題”列中獲取數據,並將其放入df中的“ Sprint”列中。 當我運行這段代碼時,它將返回一個數據幀,該數據幀的“問題”列中的第三個條目插入了df中“ Sprint”列的每一行。
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
我應該得到的是:
短跑
0 SPGC-14075
1個SPGC-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': ...
因為您是在第一個循環中將所有內容分配給j
,所以您在每個循環中都覆蓋了該值。 然后,將sprint中的每個值分配給j
的值,這將是issues
的最后一個值。
解決此問題的一個簡單更改是將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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.