python 怎么根据两列值,修改对应的某列值,其中一列的为需要修改的列标题

新手上路,请多包涵

图片.png1

图片.png2
如何根据图2的错误项,更改图1中对应编号的,且错误项对应图1的列标题中的值

阅读 4k
2 个回答
✓ 已被采纳新手上路,请多包涵

我在描述下问题,时根据图2中的 错误项,和编号去修改图1中对应的编号和列标题与图2中错误项相同的单元格的值。求大神帮忙写一下代码

自己造了些数据,不知道是否符合题主的意思。

原始数据:
     no wrong_item
0  001          a
1  003          a
2  002          b
3  004          c

处理后结果:

Out[1]:
    no  a  b  c
0  001  1  0  0
2  002  0  1  0
1  003  1  0  0
3  004  0  0  1

具体代码如下:

import pandas as pd

# 创建dataframe,或者从csv读取dataframe
# old_df = pd.read_csv(path)
old_df = pd.DataFrame([
    {'wrong_item':'a', 'no':'001'},
    {'wrong_item':'a', 'no':'003'},
    {'wrong_item':'b', 'no':'002'},
    {'wrong_item':'c', 'no':'004'}
    ])

# dataframe记录字典中,增加 'a','b','c'三个键,并标记是否存在错误项(wrong_item)
record_list = []
for record in old_df.to_dict('records'):
    for k in ['a', 'b', 'c']:
        if k in record["wrong_item"]:
            record[k] = 1
        else:
            record[k] = 0
        # 去掉重复进入的record
        if record not in record_list:
            record_list.append(record)

# 生成新的dataframe
new_df = pd.DataFrame(record_list)
# 排除错误项(wrong_item)列
new_df = new_df.loc[:, new_df.columns !='wrong_item']
# 设定列的顺序为:编号(no),'a','b','c'
new_df = new_df.reindex(columns=['no','a','b','c'])
# 设定行顺序:编号(no),'a','b','c'升序排列
new_df.sort_values(['no','a','b','c'])
推荐问题