用文本替换特定列

我有 2 个文档,一个包含特定数字,另一个文档包含数字引用以及由管道分隔的该数字的定义。然而,第一个文档有时包含多个数字,这意味着它比另一个文档有更多的列,而另一个文档只有 2 个。我尝试将它与“on”参数合并,通过“for 循环”更改列名称"并在每次迭代后再次保存合并的文档。问题是它删除了没有指定列数的行。有限制_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)

http://img4.mukewang.com/649a99010001e36216220346.jpg

http://img.mukewang.com/649a990f00019a9a09380550.jpg

万千封印
浏览 165回答 1
1回答

慕田峪4524236

我不会给出完整的代码,因为编写起来并不难。只需按照您在问题中所描述的方式编写,只需指定参数 how (即pandas.DataFrame.merge)。默认情况下inner会导致丢失行,因为它仅合并两个数据帧中都存在的行。根据您对问题的描述,您需要进行设置how='left'。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python