如何在数据框中矢量化此计算
How to Vectorize this calculation in dataframe
我有一个数据框和一本字典。字典保存整数,每个键有不同的整数。数据框中有一列保存这些键。我一直在尝试通过尽可能矢量化来提高脚本的速度。因为现在,我是数据框的迭代行。我如何对其进行矢量化?
字典:Dict = {Words1:[20,10],Words2:[10,20],Words3:[30,50]}
数据框:
Col1 Col2
'Words1' Yes
'Words2' No
'Words3' Yes
我试过:
df['Col3'] = Dict[df['Col1']][1]
。既然笑了,就知道没用。
我想做的是:
取字典中的第二个值,并根据Col1中的键将其放入Col3中。
然后我将采用 Col3 并根据 Col2 中的单词是否 Yes/No 计算 Col4 中的最终数字:
a) 如果是,我将添加到 Col3
中的数字
b) 如果不是,我会从Col3中的数字中减去。
非常感谢您的帮助。
正在使用
df = pd.DataFrame({
'Col1':['Words1','Words2','Words3'],
'Col2':['Yes','No','Yes'],
'vals':[1,2,3]})
my_dict = {'Words1':[20,10],'Words2':[10,20],'Words3':[30,50]}
val = 3
第一部分可以使用带有预处理字典的映射来解决
reduced_dict = { k : my_dict[k][1] for k in my_dict}
df['Col3'] = df['Col1'].map(reduced_dict)
第二部分可以通过将 Col2
映射到一个符号并将其乘以 add/subtract val
的值来简化
df['Col4'] = df['Col3'] + df.Col2.map({'Yes':1,'No':-1})*val
请注意,如果 add/subtract 的值是数据帧的一部分,这也适用
df['Col4'] = df['Col3'] + df.Col2.map({'Yes':1,'No':-1})*df.vals
我有一个数据框和一本字典。字典保存整数,每个键有不同的整数。数据框中有一列保存这些键。我一直在尝试通过尽可能矢量化来提高脚本的速度。因为现在,我是数据框的迭代行。我如何对其进行矢量化?
字典:Dict = {Words1:[20,10],Words2:[10,20],Words3:[30,50]}
数据框:
Col1 Col2
'Words1' Yes
'Words2' No
'Words3' Yes
我试过:
df['Col3'] = Dict[df['Col1']][1]
。既然笑了,就知道没用。
我想做的是:
取字典中的第二个值,并根据Col1中的键将其放入Col3中。
然后我将采用 Col3 并根据 Col2 中的单词是否 Yes/No 计算 Col4 中的最终数字:
a) 如果是,我将添加到 Col3
中的数字b) 如果不是,我会从Col3中的数字中减去。
非常感谢您的帮助。
正在使用
df = pd.DataFrame({
'Col1':['Words1','Words2','Words3'],
'Col2':['Yes','No','Yes'],
'vals':[1,2,3]})
my_dict = {'Words1':[20,10],'Words2':[10,20],'Words3':[30,50]}
val = 3
第一部分可以使用带有预处理字典的映射来解决
reduced_dict = { k : my_dict[k][1] for k in my_dict}
df['Col3'] = df['Col1'].map(reduced_dict)
第二部分可以通过将 Col2
映射到一个符号并将其乘以 add/subtract val
df['Col4'] = df['Col3'] + df.Col2.map({'Yes':1,'No':-1})*val
请注意,如果 add/subtract 的值是数据帧的一部分,这也适用
df['Col4'] = df['Col3'] + df.Col2.map({'Yes':1,'No':-1})*df.vals