【问题标题】:pandas replace values of a list column熊猫替换列表列的值
【发布时间】:2022-12-23 14:11:55
【问题描述】:
我有这样的数据框
| ID |
Feeback |
| T223 |
[Good, Bad, Bad] |
| T334 |
[Average,Good,Good] |
feedback_dict = {'Good':1, 'Average':2, 'Bad':3}
使用这本字典我必须更换反馈列
| ID |
Feeback |
| T223 |
[1, 3, 3] |
| T334 |
[2,1,1] |
我尝试了两种方法,但都没有用,我们将不胜感激。
method1:
df = df.assign(Feedback=[feedback_dict.get(i,i) for i in list(df['Feedback'])])
method2:
df['Feedback'] = df['Feedback'].apply(lambda x : [feedback_dict.get(i,i) for i in list(x)])
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
对我来说,第二个解决方案有效:
import ast
df['Feeback'] = df['Feeback'].apply(ast.literal_eval)
#df['Feeback'] = df['Feeback'].str.strip('[]').str.split(',')
df = df.assign(Feeback=[[feedback_dict.get(i,i) for i in x] for x in df['Feeback']])
feedback_dict = {'Good':1, 'Average':2, 'Bad':3}
df['Feeback'] = df['Feeback'].apply(lambda x : [feedback_dict.get(i,i) for i in list(x)])
print (df)
ID Feeback
0 T223 [1, 3, 3]
1 T334 [2, 1, 1]