函数中作为elif语句的python for循环

2024-04-24 09:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个函数中插入一个for循环,该函数循环遍历列表中的值。你知道吗

假设我有以下数据帧:

import pandas as pd

df = pd.DataFrame()

df['A'] = (53.104898,   52.032832,  48.705107,  43.150132,  42.09353,   42.32076,   41.620527,  44.479339,  44.673272,  43.811447,  44.273042,  47.384234,  49.210512,  50.330492   ,48.808856, 49.543268,  43.460175,  41.54373,   49.618678,  44.988629,  52.964725,
56.358917,  53.366254)
df['B'] = (2.157,2.0826,0.8452,-0.3046,-0.3436,-0.3906,-1.1528,-0.9462,-1.1314,-0.9994,-1.0538,0.785,1.5334,0.1424, 0.764,-0.6844,-2.5798,-2.3644,-1.97,-3.7466,-1.862,-0.248, -0.456)

def func():
    q = [40,60]

    def valuation_formula(x, y):

        for i in q:
            if x > 3.9:
                return 'SIT'
            elif x < -3.8:
                return 'SIT'
            elif x > 0.00 and y > i:
                return 'BUY'
            elif x < 0.00 and y < 41.14:
                return 'SELL'
            else:
                return 'SIT'

    df['C'] = df.apply(lambda row: valuation_formula(row['A'], row['B']), axis=1)

    print(df)
    i=i+1

func()

实际结果应该是两个独立的数据帧。1个数据帧使用40作为列表q中的i,第二个数据帧使用60


Tags: and数据函数df列表forreturndef
1条回答
网友
1楼 · 发布于 2024-04-24 09:48:56

如注释中所述,循环中的return将终止所有内容,因此您将只查看q的第一个值。而且,你在混合for i in qi+=1。。。你知道吗

总之,一个快速解决方法是:

q = [40,60]

def valuation_formula(i, x, y):
    # pass the i as a parameter
    if x > 3.9:
        return 'SIT'
    elif x < -3.8:
        return 'SIT'
    elif x > 0.00 and y > i:
        return 'BUY'
    elif x < 0.00 and y < 41.14:
        return 'SELL'
    else:
        return 'SIT'

# loop here
for i in q:
    df['C'] = df.apply(lambda row: valuation_formula(i, row['A'], row['B']), axis=1)
    print(df)

相关问题 更多 >