我有一个样本数据框:
import pandas as pd
df = pd.DataFrame({
'id' : [1 ,2, 3],
'pts': [25,20,9],
'ast': [8, 14, 7],
'reb': [1, 4, 9],
'oth': [5,6,7],
'tov': [4, 2, 1]
})
print(df)
id pts ast reb oth tov
0 1 25 8 1 5 4
1 2 20 14 4 6 2
2 3 9 7 9 7 1
我想基本上应用一些权重/乘以某些列,然后将它们相加并使其成为新的列(score
).并不是df
中的每一列都有查找映射.
我可以通过一个函数手动将数学应用到每一列来完成此操作:
def f(in_df):
return in_df['pts'] + (in_df['reb'] * 1.2) + (in_df['ast'] * 1.5) - df['tov']
df['score'] = f(df)
print(df)
id pts ast reb oth tov score
0 1 25 8 1 5 4 34.2
1 2 20 14 4 6 2 43.8
2 3 9 7 9 7 1 29.3
不过,我想使用字典查找来完成它:
score_dict = {'pts': 1, 'reb': 1.2, 'ast': 1.5, 'tov': -1}
# Something like ..?
df['score'] = df[?].map(lambda d: sum(k * v for k, v in score_dict.items()))
我看着this post,并试图实现如下所示的映射.不过,该解决方案只有一列用于映射;我不知道如何正确实现它.