【问题标题】:comparing and removing rows in pandas比较和删除熊猫中的行
【发布时间】:2021-07-06 13:50:00
【问题描述】:

我试图通过比较两个列表来创建一个新对象。如果行匹配,则应从拆分的 row_list 中删除该行,或将其附加到仅包含两个列表之间差异的新列表中。

results = []
for row in splitted_row_list:
    print(row)
    for row1 in all_rows:
        if row1 == row:
            
            splitted_row_list.remove(row)
        else:
            results.append(row)





print(results)

但是,此代码仅返回所有行。有人有建议吗? 样本数据

all_rows[0]:'1390', '139080', '13980', '1380', '139080', '13080'
splitted_row_list[0]:'35335','53527','353529','242424','5222','444'

【问题讨论】:

  • 您能否包含一些all_rowssplitted_row_list 的示例数据?并请发布预期的输出。

标签: pandas match row


【解决方案1】:

据我了解,您想按索引比较两个列表并保持差异,并且您想用 pandas 来做(因为标签):

所以这里有两个列表,例如:

ls1=[0,10,20,30,40,50,60,70,80,90]
ls2=[0,15,20,35,40,55,60,75,80,95]

我用这些列表制作了一个 pandas 数据框,并构建了一个掩码来过滤掉匹配的值:

df= pd.DataFrame(data={'ls1':ls1, 'ls2':ls2})
mask= df['ls1']!=df['ls2'] 

然后我可以使用掩码为每个列表调用不同的值:

# list 1
df[mask]['ls1'].values

out: array([10, 30, 50, 70, 90])

# list 2
df[mask]['ls2'].values

out: array([15, 35, 55, 75, 95])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2023-03-24
    • 2015-08-20
    • 1970-01-01
    • 2017-02-28
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多