【问题标题】:Python Compare Two ColumnPython比较两列
【发布时间】:2021-10-15 03:52:52
【问题描述】:

我在 web1.xslx 文件中有以下情况

Data1 Data2
ABC CBD
CBD NCD
CBD NCN
CBE CBE
DHE DHE

我需要比较 Data1 和 Data2,如果两者相等,则输出状态为 OK 否则 NOK 像下面在单独的 Excel 表中使用 Python 脚本 web2.xslx

Data1 Data2 status
ABC CBD NOK
CBD NCD NOK
CBD NCN NOK
CBE CBE OK
DHE DHE OK

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:

    假设您的数据框名为 df,您可以使用:

    df = pd.read_excel("web1.xlsx")
    df['status'] = df['Data1'].eq(df['Data2']).map({True: 'OK', False: 'NOK'})
    df.to_excel("web2.xlsx")
    

    【讨论】:

      【解决方案2】:

      试试这个代码:

      import pandas as pd
      
      df = pd.read_excel('web1.xlsx')
      
      status = []
      for i in range (df.shape[0]):
          if (df.iloc[i,:][0] == df.iloc[i,:][1]):
              status.append('OK')
          else:
              status.append('NOK')
      
      df['status'] = status
      print(df)
      

      希望这对您的工作有所帮助,如果正确,请将其标记为答案。谢谢

      【讨论】:

      • 在 pandas/numpy 中循环遍历行是非常低效的。使用向量运算。
      • 您好 Felix,请问 df.shape[0] 在 for 循环中的作用是什么?
      • @mozway 感谢您的反馈,我会尝试在下一个代码中修复它。
      • @Moses df.shape[0] 表示它返回数据框中的总行数,因此它会针对 df 中的每一行进行迭代
      • @Moses 你真的不应该使用这种方法,除非你知道原因或别无选择,否则永远不要循环数据帧
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多