首页 > 解决方案 > 替换熊猫 DatafFame 中的值

问题描述

我在熊猫列中有以下值:id,score

   0, [{'val': 'ABC', 'xyz': 12.094842910767}]
   1, [{'val': 'ABC', 'xyz': 2.3494842910767}]
   2, [{'val': 'CDE', 'xyz': 5.422094842910767}]
   3, [{'val': 'CDE', 'xyz': 0.22094842910767}]
   4, [{'val': 'ABC', 'xyz': 0.2094842910767}]

我想替换“分数”列中的值

我想更换:

我尝试了不同的方法,但没有得到单个值的预期结果

pd['score'] = pd['score'].to_replace=r"^[{'val': 'AB.$", value='ABC', regex=True

两者都试过

 pd['score'] = pd['score'].map({"^[{'val': 'AB.$": 'ABC', "^[{'val': 'CD.$": 'CDE'})

甚至

pd.replace({"score": r"^[{'val': 'AB.$"}, {"score": "ABC"}, regex=True)

标签: pythonpandasdataframe

解决方案


使用regex可能是到达那里的最佳方式,但如果您发布的内容完全代表您的整个数据集,您可以使用str.split()和一些操作来到达那里:

df['score_refined'] = df['score'].str.split(' ',1).str[1].str[:5]

会给你:

df

   id                                       score score_refined
0   0    {'val': 'ABC',  'xyz': 12.094842910767}]         'ABC'
1   1    {'val': 'ABC',  'xyz': 2.3494842910767}]         'ABC'
2   2  {'val': 'CDE',  'xyz': 5.422094842910767}]         'CDE'
3   3   {'val': 'CDE',  'xyz': 0.22094842910767}]         'CDE'
4   4    {'val': 'ABC',  'xyz': 0.2094842910767}]         'ABC'

推荐阅读