pandas - 如何让python更快地应用自定义函数
问题描述
我开发了一个客户功能来对我的数据框中的产品类型进行分类。
def RST_FINAL_SECOND_FUNCTION(DF_FRAME_NAME):
if (DF_FRAME_NAME['Column1'] == 'Yes'):
return 'YES'
elif (DF_FRAME_NAME['Column1'] == 'No'):
return DF_FRAME_NAME['column2']
df['column3'] = df.apply(RST_FINAL_SECOND_FUNCTION, axis =1)
将类似功能应用于具有 200,000 行的数据集会消耗时间,有哪些替代方法可以完成上述操作。我们可以使用 lambda 函数吗
用于的样本数据是:
df = pd.DataFrame({'Column1': ['Yes','No','Yes','No','No','No','Yes'],
'Column2': [5,5,5,7,7,10,10]
})
解决方案
您可以使用numpy.where
import numpy as np
df['column3'] = np.where(df['Column1'].eq('Yes'), 'Yes', df['Column2'])
print(df)
输出:
Column1 Column2 column3
0 Yes 5 Yes
1 No 5 5
2 Yes 5 Yes
3 No 7 7
4 No 7 7
5 No 10 10
6 Yes 10 Yes
推荐阅读
- python - 将二维形状绘制成 numpy 数组
- python - Matplotlib - 以对数刻度标出方向
- c# - 如何使用 WebDav 在 C# 中访问 nextcloud 文件?
- matlab - 如何在 matlab 中将 glcm 功能写入 excel 表?
- python - 如何优化 pandas 中的递归函数调用和内循环?
- java - 当我更改文本并将其显示在 Thread 的 UI 上时,什么也没做(JAVA)
- clips - 如何测试 Clips 的性能?
- python - 如何让任何人使用 Flask 将文件上传到我的 Dropbox 或 Google Drive 文件夹?
- java - 请求属性在spring微服务中无法访问
- postgresql - 无法连接到 RDS Postgres