Skip to main content
 首页 » 编程设计

python之在由现有列的值组成的数据框中创建一个新列

2025年05月04日15grandyang

我有一个如下所示的数据框:

      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