import pandas as pd
sol={'R4': -10.0, 'R5': 53.0, 'R7': -10.0, 'R1': 18.0,'R2': -3.0, 'R3': 19.0, 'R8': 6.0}
mat = pd.DataFrame(columns=sol.keys())
for i in range(5):
s=pd.Series(sol)
mat=mat.append(s,True)
mat.insert(len(next(mat.iterrows())[1]),'flag',0)
for idx, row in mat.iterrows():
if idx>0:
row.set_value('flag',1)
print mat
输出是:
R4 R5 R7 R1 R2 R3 R8 flag
0 -10 53 -10 18 -3 19 6 0
1 -10 53 -10 18 -3 19 6 0
2 -10 53 -10 18 -3 19 6 0
3 -10 53 -10 18 -3 19 6 0
4 -10 53 -10 18 -3 19 6 0
'loc'无效。所以我想要一个像这样(下面)的输出而不使用loc。数据框应该循环更新。
R4 R5 R7 R1 R2 R3 R8 flag
0 -10 53 -10 18 -3 19 6 0
1 -10 53 -10 18 -3 19 6 1
2 -10 53 -10 18 -3 19 6 1
3 -10 53 -10 18 -3 19 6 1
4 -10 53 -10 18 -3 19 6 1
答案 0 :(得分:0)
由于您特别想要使用循环,因此可以使用:
for idx, row in mat.iterrows():
if idx > 0:
mat.set_value(idx, 'flag', 1)
在您的代码中,row
是副本,因此修改它并不会更改原始数据框。
编辑:已更新以避免loc
。你应该升级你的熊猫版本。