对表格进行遍历判断,然后匹配字典中对应的键值
  X5zJxoD00Cah 2023年11月02日 38 0

对表格进行遍历判断,然后匹配字典中对应的键值,然后拼接字符串

my_str = "地址"
my_df = pd.DataFrame([["序号0", True], ["序号1", False]], columns=["序号", "判断"])

# 遍历判断,拼接字符串(不能使用函数拼接,譬如(os.path.join或str.join), 除非指定到行)
my_df["拼接"] = np.where(
    my_df.判断,
    my_str + "\\" + my_df.序号,
    "不拼接"
)
my_df

# 遍历判断,匹配字典,拼接字符串(遍历内部不能使用函数调用表格,除非映射到相应的行)
# 如果my_df["判断"]为True,将my_str与my_dict中对应的键值按"\\"拼接
my_dict = {"序号0": "文件0", "序号3": "文件1"}
my_df["匹配"] = np.where(
    my_df.判断,
    my_str + "\\" + my_df["序号"].map(my_dict),  # 将键值映射到相应的行
    "不拼接"
)
my_df


更新 np.vectorize()将函数向量化

在 np.where() 函数中,使用 os.path.join() 函数来拼接路径时,需要使用 np.vectorize() 函数将其向量化,以便正确地应用到 Series 对象中的每个元素

import pandas as pd
import numpy as np
import os

my_str = "地址"
my_df = pd.DataFrame([["序号0", True], ["序号1", False]], columns=["序号", "判断"])
my_df["拼接"] = np.where(
    my_df["判断"],
    np.vectorize(os.path.join)(my_str, my_df["序号"]),
    "不拼接"
)
my_df

以此类推 可以使用任意函数在遍历判断中调用表格

需要注意 下面代码中 将"\\"join()改写成 lambda函数

使用 np.vectorize() 函数来向量化 "\\".join 函数时,需要使用一个 lambda 函数来传递参数。这样可以确保将 [my_str, my_df["序号"]] 作为一个整体传递给 "\\".join 函数进行拼接

import pandas as pd
import numpy as np
import os

my_str = "地址"
my_df = pd.DataFrame([["序号0", True], ["序号1", False]], columns=["序号", "判断"])
my_df["拼接"] = np.where(
    my_df["判断"],
    np.vectorize(lambda x: "\\".join(x))([my_str, my_df["序号"]]),
    "不拼接"
)
my_df


更新 空表格无法应用np.vectorize()使用apply函数替代

https://blog.51cto.com/u_16055028/6674753

np.vectorize(lambda x: "\\".join(x))([my_str, my_df["序号"]])

替换为

my_df["序号"].map(my_dict).apply(lambda x: os.path.join(my_str, x))



总结1

map(字典)将键值映射到相应的行

总结2

使用任意函数在遍历判断中调用表格

np.vectorize()将某函数向量化

或者

使用apply函数,将某函数应用在相应的元素后面

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
X5zJxoD00Cah