Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python循环的问题_Python 3.x_Loops - Fatal编程技术网

Python 3.x python循环的问题

Python 3.x python循环的问题,python-3.x,loops,Python 3.x,Loops,我有一个循环问题,我想: A.查看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.fro

我有一个循环问题,我想: A.查看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

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

您可以在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']

NaN
/
np.NaN
是特殊的;它不等于任何东西,甚至不等于它本身。您需要使用
np.isnan
来测试它。我没有足够的经验来说明如何使用熊猫数据帧,所以这不是一个答案,但这里重要的部分是
df['key'].items==np.nan
保证
False
。谢谢@abhilb。但是,“最后知道”将覆盖上一个结。不知何故,在输入上述内容之前,我必须查看值是否为None或nan。请检查最后的注释。这很有效。我只需要按升序重新排列节点值。谢谢。很乐意帮忙:)