我有一个如下所示的数据框:
X Y Corr_Value
0 51182 51389 1.00
1 51182 50014 NaN
2 51182 50001 0.85
3 51182 50014 NaN
我想创建一个新列,其中包含 X 和 Y 列的值。这个想法是遍历行,如果 Corr_Value 不为 null ,则新列应显示:
求解(X 列值)将以(Corr_value 列)% 的概率求解(Y 列值)。
例如,第一行的结果应该是:
解出 51182 将以 100% 的概率解出 51389。
这是我写的代码:
dfs = []
for i in df1.iterrows():
if ([df1['Corr_Value']] != np.nan):
a = df1['X']
b = df1['Y']
c = df1['Corr_Value']*100
df1['Remarks'] = (f'Solving {a} will solve {b} at {c}% probability')
dfs.append(df1)
df1 是存储X、Y 和Corr_Value 数据的dataframe。
但似乎有问题,因为我得到的结果是这样的:
但是结果应该是这样的:
如果你能帮我得到想要的结果,那就太好了。
请您参考如下方法:
使用DataFrame.dropna用于删除缺失的行并应用 f-string 用于自定义输出字符串 DataFrame.apply :
f = lambda x: f'Solving {int(x["X"])} will solve {int(x["Y"])} at {int(x["Corr_Value"] * 100)}% probability.'
df['Remarks'] = df.dropna(subset=['Corr_Value']).apply(f,axis=1)
print (df)
X Y Corr_Value Remarks
0 51182 51389 1.00 Solving 51182 will solve 51389 at 100% probabi...
1 51182 50014 NaN NaN
2 51182 50001 0.85 Solving 51182 will solve 50001 at 85% probabil...
3 51182 50014 NaN NaN
