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

发布于 2022-09-12 01:21:44 字数 164 浏览 25 评论 0

图片.png1

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雪落纷纷 2022-09-19 01:21:44

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

烟雨凡馨 2022-09-19 01:21:44

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

原始数据:
     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'])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文