首页 > 解决方案 > python循环的问题

问题描述

我遇到了我想要的循环问题:查看 DF 行中的值是否大于列表中的值 b。如果是,则将变量名和列表中的值连接为字符串 c。如果不是,则通过直到满足循环条件。

这是我尝试过的。

import pandas as pd
import numpy as np

df = {'level': ['21', '22', '23', '24', '25', '26', '27', '28', '29', '30']
     , 'variable':'age'}

df = pd.DataFrame.from_dict(df)

knots = [0, 25]
df.assign(key = np.nan)
for knot in knots:
    if df['key'].items == np.nan:
        if df['level'].astype('int') > knot:
            df['key'] = df['variable']+"_"+knot.astype('str')
    else:
         pass
else:
     pass

但是,这只会使key列具有 NaN 值。我不确定为什么它没有放置连接。

标签: python-3.xloops

解决方案


您可以在 for 循环中执行类似的操作。不需要任何 if 条件:

df.loc[df['level'].astype('int') > 25, 'key'] = df.loc[df['level'].astype('int') > 25, 'variable'] + '_' + df.loc[df['level'].astype('int') > 25, 'level']

推荐阅读