python - 用文本替换特定列
问题描述
我有 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)
解决方案
我不会给出整个代码,因为它并不难写。正如您在问题中描述的那样,只需指定参数如何(即pandas.DataFrame.merge)。默认情况下会inner
导致丢失的行,因为它仅在两个数据帧中都存在的行上合并。根据您对问题的描述,您需要设置how='left'
.
推荐阅读
- arduino - wl-330 nrf24l01+pa+lna 只接收 W
- sql-server - 如何获取 SQL Server 系统 procs 列表
- apache-spark - 增量表统计信息
- r - 如何将 Corrplot 与手动创建的相关矩阵一起使用(列表类型)
- google-bigquery - Bigquery将字符串转换为时间戳
- csv - Hadoop 独立集群 Pyspark 加载 CSV 文件不存在(hdfs://home/usr/filepath.csv)
- node.js - 如何使用 SuperTest 进行单元测试以使用 multer 发布文件
- r - R- 仅不加载所有 5 个变量 1
- swift - 如何在 SwiftUI 中对 API 调用 JSON 进行故障排除
- sql - 将从当前月份和年份的日期中提取 MINDATE 的 SQL 语句