Python 3.x python循环的问题
我有一个循环问题,我想: A.查看DF行中的值是否大于列表中的值 B如果是,请将变量名和列表中的值作为字符串连接起来 C如果不是,则传递,直到满足循环条件 这就是我尝试过的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
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。请检查最后的注释。这很有效。我只需要按升序重新排列节点值。谢谢。很乐意帮忙:)