我正在尝试从endResult dataframe'issues'列获取数据并将其放入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': ...
答案 0 :(得分:0)
因为您要在第一个循环中将所有内容分配给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