我有 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 mergelast_iter = merge_res(1)for i in range(2, 15): last_iter = merge_res(i, last_iter)
1 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
我不会给出完整的代码,因为编写起来并不难。只需按照您在问题中所描述的方式编写,只需指定参数 how (即pandas.DataFrame.merge)。默认情况下inner
会导致丢失行,因为它仅合并两个数据帧中都存在的行。根据您对问题的描述,您需要进行设置how='left'
。
添加回答
举报
0/150
提交
取消