2017-08-14 207 views
1

比方说,我们有一个列A,B和C的一个数据帧:遍历数据帧逐一(大熊猫)

df = pd.DataFrame(columns =('A','B','C'), index=range(1)) 

列保存数值的三行:

0  A  B  C 
1 2.1 1.8 1.6 
2 2.01 1.81 1.58 
3 1.9 1.84 1.52 

如何是否循环遍历从1到3的每一行,然后执行if语句,包括添加一些变量:

if B1 > 1.5 
    calc_temp = A1*10 
    calc_temp01 = C1*-10 
if B2 > 1.5 
    calc_temp = A2*10 
    calc_temp01 = C2*-10 
if B3 >1.5 
    calc_temp = A3*10 
    calc_temp01 = C3*-10 

I上面甚至有可能吗?它必须知道某种类型的范围,即带有某种计数器的全范围数据集编号,是的? if语句应该引用该特定行。

+0

您可以df.iterrows()使用'为行:' –

+0

由于要更换calc_temp'的'已经计算出的值和'calc_temp01',止跌” t calc_temp和calc_temp01的最终值取决于最后出现的B大于1.5的A和C的值 –

回答

2

我想你需要iterrows

for i, row in df.iterrows(): 
    if row['B'] > 1.5: 
     calc_temp = row['A'] *10 
     calc_temp01 = row['C'] *-10 
+1

如果你正在访问一个循环中的行,再次调用'.loc'?也可以在范围内使用'for我(len(df)):' –

+1

@cᴏʟᴅsᴘᴇᴇᴅ - 有时过于复杂,谢谢你的成功。 – jezrael

+0

@jezrael - 灿烂,它的工作。如果我们在绘图不断更新的同时通过迭代计算calc_temp,该怎么办?如何实现这一目标? – Bondeaux