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

时间:2020-10-07 13:01:14

标签: python list dataframe comparison

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

 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]} 

1 个答案:

答案 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]

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

相关问题