我有一个矩阵,如下所示:
X =
t r v
a 4 7 3
b 0 1 8
c 0 7 9
d 9 6 0
e 1 3 4
f 8 7 2
g 5 7 4
h 5 1 0
i 9 8 6
j 4 6 7
我有一本具有键值对的字典,如下所示:
Y = {'t': 5, 'r': 4, 'v': 2}
我试图将Y的值映射到矩阵X的每一列,以便如果Y中的值大于或等于X中的值,则得到'1',否则得到'0'。
例如:在上面的代码中,输出应为:
Z = [011.001,011,110.001,111,111,100,111,011]
在此,对于第一行,X中的't'= 4 <'t'= 5;'r'= 7>'r'= 4; 'v'= 3>'v'= 2,所以我们得到011,依此类推。我经历了这个和这个,但不能得到一个解决方案,我期待的。TIA。
df = df.ge(Y).astype(int)
print (df)
t r v
a 0 1 1
b 0 0 1
c 0 1 1
d 1 1 0
e 0 0 1
f 1 1 1
g 1 1 1
h 1 0 0
i 1 1 1
j 0 1 1
如果要输出list
先转换为str
,然后转换为join
每一行:
L = df.ge(Y).astype(int).astype(str).apply(''.join, axis=1).tolist()
print (L)
['011', '001', '011', '110', '001', '111', '111', '100', '111', '011']
或新栏Z
:
df['Z'] = df.ge(Y).astype(int).astype(str).apply(''.join, axis=1)
print (df)
t r v Z
a 4 7 3 011
b 0 1 8 001
c 0 7 9 011
d 9 6 0 110
e 1 3 4 001
f 8 7 2 111
g 5 7 4 111
h 5 1 0 100
i 9 8 6 111
j 4 6 7 011
详情:
print (df.ge(Y))
t r v
a False True True
b False False True
c False True True
d True True False
e False False True
f True True True
g True True True
h True False False
i True True True
j False True True
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句