在Python中将字典键映射到数据帧值

在Python中将字典键映射到数据帧值,python,dictionary,Python,Dictionary,我有一个矩阵,如图所示: 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 = 
    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”

对于ex:在上述代码中,输出应为:

Z=[011001011111000111111111111011011]

在这种情况下,对于第一行,X中的't'=4<'t'=5;'r'=7>r'=4;'v'=3>“v'=2,我们得到011,依此类推。 我通过了,但没有得到一个解决方案,我正在寻找。TIA.

通过以下方式将强制转换掩码用于整数:

如果要输出
列表
首先转换为
str
,然后将
加入
每一行:

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

在熊猫中使用
zip
和列提取

键=[“t”、“r”、“v”]

ans=zip(*[np.array(X[key]>=y[key])表示键入键]


这将为您提供所需的输出,但数据类型将为
bool
,可转换为
int

,感谢此解决方案。为了得到这个列表,我一直在与各种循环作斗争。无论如何,当我在web应用程序(Jupyter笔记本)上使用它时,这个解决方案是有效的,但当我通过终端执行代码时,它返回所有零矩阵。我不知道这是什么原因。我知道,数字是否保存为字符串?通过打印检查(df.applymap(type))是。在应用连接操作和转换到列表之前,它是字符串。因此,首先将字符串转换为int,df=df.astype(int).ge(Y)。astype(int)应该可以工作。这很好。我感觉到df=df.astype(int).ge(10).astype(int)工作得非常好,但是对于字典元素Y,它给出的是零。
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