我有一個資料框和一個字典。該字典包含整數,每個鍵具有不同的整數。資料框中有一列包含這些鍵。我一直在嘗試通過盡可能矢量化來提高腳本的速度。因為現在,我是資料框的迭代器。我怎么能矢量化呢?
字典: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 中的單詞是/否來計算 Col4 中的最終數字:
a) 如果是,我將添加到 Col3 中的數字
b) 如果不是,我將從 Col3 中的數字中減去。
我真的很感激幫助。
uj5u.com熱心網友回復:
使用
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
第一部分可以使用帶有預處理字典的 map 來解決
reduced_dict = { k : my_dict[k][1] for k in my_dict}
df['Col3'] = df['Col1'].map(reduced_dict)
第二部分可以通過映射Col2
到一個符號并將其乘以要加/減的值來解決val
df['Col4'] = df['Col3'] df.Col2.map({'Yes':1,'No':-1})*val
請注意,如果要添加/減去的值是資料框的一部分,這也適用
df['Col4'] = df['Col3'] df.Col2.map({'Yes':1,'No':-1})*df.vals
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450097.html
標籤:python-3.x 熊猫 数据框 矢量化
上一篇:PythonLambda字典排序
下一篇:熊貓爆炸多列