0
点赞
收藏
分享

微信扫一扫

将字典的键值映射到相应的行,将函数向量化 无法将np.vectorize应用到空表

问题:

将字典的键值映射到相应的行,将函数向量化 无法将np.vectorize应用到空表

代码:

'''拼接-发货单文件地址'''
df_file_PivotTable["文件地址"] = np.where(
    df_file_PivotTable.是否下载,
    # 将字典的键值映射到相应的行,将函数向量化
    np.vectorize(os.path.join)(str_addr_save, df_file_PivotTable.预发货单号.map(dict_save_filter)),
    "未下载"
)

报错:

ValueError: cannot call `vectorize` on size 0 inputs unless `otypes` is set

原因:

表格是空的 无法应用np.vectorize

解决1:

绕过问题

'''拼接-发货单文件地址'''
df_file_PivotTable["文件地址"] = np.where(
    df_file_PivotTable.是否下载,
    str_addr_save + "\\" + df_file_PivotTable.预发货单号.map(dict_save_filter),  # 将键值映射到相应的行
    "未下载"
)

解决2:

需要在 my_df["序号"].map(my_dict) 后使用 .apply() 函数来应用 lambda 函数,以便将 my_str 和 my_df["序号"].map(my_dict) 拼接为路径

import pandas as pd
import numpy as np
import os

my_str = ""
my_df = pd.DataFrame(columns=["序号", "判断"])
my_dict = {"序号0": "文件0", "序号3": "文件1"}
my_df["拼接"] = np.where(
    my_df["判断"],
    my_df["序号"].map(my_dict).apply(lambda x: os.path.join(my_str, x)),
    "不拼接"
)
my_df


举报

相关推荐

将针孔模型相机 应用到3DGS

0 条评论