如何遍历pandas DataFrame并通过指定字典替换0、1值
实现方法
pandas内置方法可以直接完成需求,无需手动逐行逐列遍历,效率远高于自定义循环。
步骤说明
- 先确认你的DataFrame中0、1的存储类型,如果是整数类型,需要先把映射字典的key从字符串转为整数,避免匹配失败。
- 直接调用pandas的
replace方法传入映射字典即可完成按列替换。
完整代码示例
import pandas as pd import numpy as np # 构造测试用DataFrame,第二行全为0,其余行全为1,和你给出的预期输出匹配 df = pd.DataFrame(np.ones((5, 6), dtype=int)) df.loc[1] = 0 # 你的列映射字典 map_dict = { 0: {'0': 'G', '1': 'A'}, 1: {'0': 'G', '1': 'A'}, 2: {'0': 'T', '1': 'A'}, 3: {'0': 'G', '1': 'A'}, 4: {'0': 'A', '1': 'C'}, 5: {'0': 'C', '1': 'A'} } # 映射字典key类型转换(如果你的df里0、1是整数,需要这一步;如果是字符串可以删掉) for col in map_dict: map_dict[col] = {int(k): v for k, v in map_dict[col].items()} # 按列替换核心代码 df = df.replace(map_dict)
运行结果
输出前两行如下,和你给出的预期一致:
0 1 2 3 4 5 0 A A A A C A 1 G G T G A C
注意:如果你需要第一行全部输出为A,调整映射字典中第4列1对应的取值即可。
可选遍历实现(不推荐大数据量使用)
如果确实需要通过遍历实现,也可以按列调用map方法完成替换:
for col in df.columns: df[col] = df[col].map(map_dict[col])
内容的提问来源于stack exchange,提问作者RandomX27
相关产品推荐
相关产品推荐

