字典键,用字典值替换pandas dataframe列中的字符串并执行评估

use*_*000 6 python pandas

我有一个熊猫数据框:

df = pd.DataFrame({'col1': ['3 a, 3 ab, 1 b',
                            '4 a, 4 ab, 1 b, 1 d',
                            np.nan] })
Run Code Online (Sandbox Code Playgroud)

和一本字典

di = {'a': 10.0,
 'ab': 2.0,
    'b': 1.5,
    'd': 1.0,
    np.nan: 0.0}
Run Code Online (Sandbox Code Playgroud)

使用字典中的值,我想像这样评估数据框行:

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]  })
Run Code Online (Sandbox Code Playgroud)

因此,到目前为止,我只能将“,”替换为“ +”

df['col1'].str.replace(',',' +').str.split(' ')
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 2

这似乎是杀戮的方式

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
Run Code Online (Sandbox Code Playgroud)