【问题标题】:Replacing specific columns with a text [closed]用文本替换特定列[关闭]
【发布时间】:2020-12-17 09:27:47
【问题描述】:

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

【问题讨论】:

标签: python pandas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 2013-11-01
    • 2012-05-13
    • 2012-02-07
    • 1970-01-01
    • 2020-04-15
    • 2019-01-23
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多