首页 > 解决方案 > 用文本替换特定列

问题描述

我有 2 个文档,一个带有特定数字,另一个文档带有数字参考以及由管道分隔的该数字的定义。但是,第一个文档有时包含多个数字,这意味着它比另一个文档具有更多的列,而另一个文档只有 2 个。由于“for 循环”,我尝试将它与更改列名的“on”参数合并" 并在每次迭代后再次保存合并的文档。问题是它删除了没有指定列数的行。有列限制_n1-16。

def merge_res(number, last_iter=None):
    res_n = f"restrict_n{number}"
    res_d = f"restrict_d{number}"
    if number == 1:
        restrict_desc_csv = pd.read_csv(
            RESTRICTION_DESC,
            sep="|",
            delimiter="|",
            header=None,
            names=["restrict_n1", "restrict_d1",],
            dtype=object,
        )
        merge = restrict_csv.merge(restrict_desc_csv, on="restrict_n1")
    else:
        restrict_desc_csv = pd.read_csv(
            RESTRICTION_DESC,
            sep="|",
            delimiter="|",
            header=None,
            names=[res_n, res_d],
            dtype=object,
        )
        merge = last_iter.merge(restrict_desc_csv, on=res_n)
    return merge


last_iter = merge_res(1)
for i in range(2, 15):
    last_iter = merge_res(i, last_iter)

在此处输入图像描述

在此处输入图像描述

标签: pythonpandas

解决方案


我不会给出整个代码,因为它并不难写。正如您在问题中描述的那样,只需指定参数如何(即pandas.DataFrame.merge)。默认情况下会inner导致丢失的行,因为它仅在两个数据帧中都存在的行上合并。根据您对问题的描述,您需要设置how='left'.


推荐阅读