【问题标题】:Compare several dataframe columns to list比较几个数据框列以列出
【发布时间】:2022-01-16 19:07:10
【问题描述】:

我有一个这样的数据框(列不是并排的):

 Num A Num B Num C Marked
0  213   314   512
1  612   516   713
2  613   678   125
3  163   813   312

还有像 list = [612,813,512,713]这样的列表

我现在想比较,如果列表中的值存在于数据框中,则将其标记为 1,否则标记为 0,以便输出为:

 Num A Num B Num C Marked
0  213   314   512      1
1  612   516   713      1
2  613   678   125      0
3  163   813   312      1

我只发现了如何用单列做到这一点:

import pandas as pd
import numpy as np

path = "path"
wb = pd.ExcelFile(path)
df = wb.parse("Sheet1")

list = [612,813,512,713]

df['Marked'] = df.Num_A.isin.(list).astype(int) 


如何让这个考虑所有列?

提前致谢!

【问题讨论】:

  • 不要使用“list”作为变量名,这已经被原生python使用了!

标签: python excel pandas


【解决方案1】:

生成一个 2.df,在那里使用 isin,为第二个数据框的列添加前缀,然后将它们连接在一起:

lst = [612,813,512,713]

df.join(df.isin(lst).add_prefix('Marked_'))

【讨论】:

    【解决方案2】:

    您可以使用np.isin方法检查lst中的数字是否存在于df沿列,然后将其转换为整数值:

    df['Marked'] = np.isin(df.values,lst).any(axis=1).astype(int)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-17
      • 2021-01-17
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多