Skip to main content
 首页 » 编程设计

python之如果列表,Pandas 将列值拆分为新列

2025年05月04日15lidabo

我仍在学习 Pandas ,并且有一个包含 2 列的 Pandas 数据框,如下所示:

actual label          pred label 
     0                    -1 
     0                    -1 
     1           [1, 0.34496911461303364] 
     1                    -1 

我想要完成的是,如果“pred label”中的值是一个列表,以获取列表中的第一个值,在本例中为 1,并将其保留在列中,然后获取列表中的第二个值并将其放在自己的列“预测分数”中。

请您参考如下方法:

如果可以避免的话,一开始就以这种初始格式存储 DataFrame 可能不是一个好主意。这是一个解决方案:

import pandas as pd 
 
df = pd.DataFrame({'actual_label' : [0,0,1,1], 
                  'pred_label' : [-1,-1, [1, 0.34496911461303364], -1]}) 
 
def split_label(v): 
  if isinstance(v, list): 
    return pd.Series(v, index = ['pred_label', 'pred_score']) 
  return pd.Series(v, index = ['pred_label']) 
 
new_pred = df.pred_label.apply(split_label) 
df_new = pd.concat([df.actual_label, new_pred], axis=1) 

最终输出如下所示:

   actual_label  pred_label  pred_score 
0             0          -1         NaN 
1             0          -1         NaN 
2             1           1    0.344969 
3             1          -1         NaN