【pandas的apply操作】少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述pandas的apply操作相关的知识,希望能为你提供帮助。
pandas的apply操作类似于Scala的udf一样方便,假设存在如下dataframe
:
id_partpredpred_class v_id
0d[0.722817, 0.650064]cat,dogd1
15[0.119208, 0.215449]other_label,other_labeld2
需要把
v_id=d1
中,pred
与 pred_class
一一对应,需要将 pred
大于0.5的pred_class
取出来作为新的一列,如果小于0.5则不取出来:import pandas as pd# 提取类别
def get_pred_class(pred_class, pred):
pred_class_list = pred_class.split("
,"
)
result_class_list = []
for i in range(0, len(pred)):
if float(pred[i]) >
= 0.5:
result_class_list.append(pred_class_list[pred.index(pred[i])])
return result_class_list# 新建一个dataframe
data = https://www.songbingjia.com/android/pd.DataFrame({
'
v_id'
: ["
d1"
, '
d2'
],
'
pred_class'
: ["
cat,dog"
, '
other_label,other_label'
],
'
pred'
: [[0.722817,0.650064], [0.119208,0.215449]],
'
id_part'
: ["
d"
, '
5'
],
})df = data.copy()
df["
pos_labels"
] = data.apply(lambda row: get_pred_class(row['
pred_class'
], row['
pred'
]), axis=1)
print(df)
得到结果为:
id_partpredpred_class v_idpos_labels
0d[0.722817, 0.650064]cat,dogd1[cat, dog]
15[0.119208, 0.215449]other_label,other_labeld2[]
PS:如果没有
df = data.copy()
将会出现错误:A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
推荐阅读
- android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)
- 区块链点对点交易APP如何交易
- 微信中打开 input file 在安卓设备上没有拍照功能
- Windows 10的10款最佳密码管理器下载推荐合集(哪个更好())
- Windows的12款最佳数据粉碎机软件下载推荐合集
- 为你推荐最实用的电脑公司w7系统64位安装办法
- WIN7系统白云一键重装怎样安装?
- 电脑公司win7 64位旗舰版系统硬盘安装图文详细教程
- WINDOWS7系统如何一键取得密匙