遍历数据框并填充值

时间:2019-03-19 16:02:33

标签: pandas

我正在尝试遍历数据框,并根据规则用值填充新列:

#formula for trading strategy
df['new_column'] = ""

for index,row in df.iterrows():
        if row.reversal == 1:
            row.new_column = 1
            index += 126
            row.new_column = -1
        else:
            row.new_column = 0

此公式用于以以下方式填充新列:反转= 1时,给定值1,随后的125行为0,第126行为-1。然后,它应该再次开始查看反转列的第127个项目是1(表示反转)还是0,依此类推。相反,如果反转!= 1,则给出值0。

问题是当我查看形成的新列时,它仍然是一个空列。我在其中输入值的方式一定存在错误。我研究了其他方法来构造数据帧的if语句(例如lambda),但是它们不允许我执行此代码中的所有操作

1 个答案:

答案 0 :(得分:0)

new_column的值可以是:0、1或-1, 我建议您一开始将0装入您的列,因此无需设置0:

df['new_column'] = 0
index = 0
while index < df.shape[0]:
    if df['reversal'][index] == 1:
        df.loc[index,'new_column'] = 1            #set 1 to same index
        df.loc[index + 126, 'new_column'] = -1    #set -1 to 126th row
        index = index + 127                       #inc index to next loop
    else:
        index = index + 1

请注意,索引的值不能大于数据帧的行数

您可以修改测试以保护循环(避免出现错误消息):

    if df['reversal'][index] == 1 and (index + 126) < df.shape[0]: