我有一个 Pandas 数据框:
df = pd.DataFrame({'col1': ['3 a, 3 ab, 1 b',
'4 a, 4 ab, 1 b, 1 d',
np.nan] })
和字典
di = {'a': 10.0,
'ab': 2.0,
'b': 1.5,
'd': 1.0,
np.nan: 0.0}
使用字典中的值,我想像这样评估数据框行:
3*10.0 + 3*2.0 + 1*1.5 给我一个看起来像这样的最终输出:
pd.DataFrame({'col1': ['3 a, 3 ab, 1 b',
'4 a, 4 ab, 1 b, 1 d',
'np.nan'], 'result': [37.5,
50.5,
0] })
所以,到目前为止我只能用“+”替换“,”
df['col1'].str.replace(',',' +').str.split(' ')
最佳答案
这里似乎已经结束了
df['col1'].str.split(', ',expand=True).replace({' ':'*','np.nan':'0'},regex=True).\
stack().apply(lambda x : eval(x,di)).sum(level=0)
Out[884]:
0 37.5
1 50.5
2 0.0
dtype: float64
关于python - 字典键用字典值替换 pandas 数据框列中的字符串并执行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098406/