我有一个数据框和一个列表,其中包括我数据框中列名称的一部分,如下所示:
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]}
答案 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]
为了方便理解,我在代码中使用了测试数据。您可以用您的实际数据替换测试数据(即用您的实际数据帧替换我的测试数据框)。希望这会有所帮助!