比较两个数据框列并分配零和一

Comparing two data frames columns and assigning Zero and One

我有一个数据框和一个列表,其中包括我的数据框中列名的一部分,如下所示:

 my_frame:
           col1, col2, col3, ..., coln
              2,    3,    4, ..., 2
              5,    8,    5, ..., 1
              6,    1,    8, ..., 9

 my_list:
             ['col1','col3','coln']

现在,我想创建一个数组,其大小与我的原始数据框(总列数)相同,仅包含零和一。基本上,如果“my_list”中有类似的列名,我希望数组包含 1,否则为 0。我想要的输出应该是这样的:

  my_array={[1,0,1,0,0,...,1]} 

这应该对你有帮助:

import pandas as pd

dictt = {'a':[1,2,3],
         'b':[4,5,6],
         'c':[7,8,9]}

df = pd.DataFrame(dictt)

my_list = ['a','h','g','c']

my_array = []

for column in df.columns:
    if column in my_list:
        my_array.append(1)
    else:
        my_array.append(0)
print(my_array)

输出:

[1, 0, 1]

如果您想将 my_array 用作 numpy array 而不是 list,请使用:

import pandas as pd
import numpy as np

dictt = {'a':[1,2,3],
         'b':[4,5,6],
         'c':[7,8,9]}

df = pd.DataFrame(dictt)

my_list = ['a','h','g','c']

my_array = np.empty(0,dtype = int)

for column in df.columns:
    if column in my_list:
        my_array = np.append(my_array,1)
    else:
        my_array = np.append(my_array,0)
print(my_array)

输出:

[1 0 1]

为了便于理解,我在代码中使用了测试数据。你可以用你的实际数据替换测试数据(即用你的实际数据帧替换我的测试数据帧)。希望这对您有所帮助!