【问题标题】:How to compare values of different columns in pandas如何比较熊猫中不同列的值
【发布时间】:2020-03-05 14:33:34
【问题描述】:

我正在做一个 QA,我需要比较来自两个不同域的许多着陆页,并检查某些 ID 是否在两个站点中。

我已经完成了抓取,到目前为止,我有一个这样的数据框: (对不起,如果我没有使用正确的格式来显示df,这是我第一次在这里提问,我不知道如何正确地做)

  STAGE-1001-1001     PROD-1001-1001      STAGE-1001-1002     PRODs-1001-1002
0     ab1311             ab1311                qa1311               qa1311   
1     ac1312             ac1312                qq1311               qq1311   
2     ad1311             ad1311                qc1313               qc1313   
3     acb1313            acb1313               qd1312               qd1312   
4     a1311              a1311                 qe131e               qe131e  

基本上,我需要做的是比较每个产品的 STAGE 列与 PROD 列,在这种情况下,STAGE-1001-1001 与 PROD-1001-1001 & PROD-1001-1002 与 PROD-1001-1002

有什么想法吗?

我的想法是(一旦完成)有一个类似于这样的 df:

             TRUE    FALSE
1001-1001    True
1001-1002    True
1001-1003            False
1001-1004    True    
...

如果 ID 相同则为 True,如果缺少任何 ID,则为 False。

谢谢!!!

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    这是一种方法(远不如 yatu 的回答 pandastic

    # Get product IDs if you don't have them yet
    products = {col.split('-', 1)[-1] for col in df.columns}
    
    products_validity = dict()
    
    for prod_id in products:
        is_valid = (df['PROD-'+prod_id]==df['STAGE-'+prod_id]).all()
        products_validity[prod_id] = [is_valid]
    
    validity_df = pd.DataFrame.from_dict(
        products_validity, 
        orient='index', 
        columns=['is_valid']
    )
    # Create inversed column if needed
    validity_df['is_not_valid'] = ~validity_df['is_valid'] 
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 1970-01-01
      • 2017-12-14
      • 2017-03-28
      • 1970-01-01
      • 2021-10-08
      • 2021-12-06
      • 2019-09-17
      • 1970-01-01
      相关资源
      最近更新 更多