我仍在学习 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
