我有一个这样的 Dataframe
| 识别号|反馈|
| - ------|- ------|
| T223| [好,坏,坏]|
| T334| [一般、良好、良好]|
feedback_dict = {'Good':1, 'Average':2, 'Bad':3}
使用这本词典,我必须替换反馈栏
| 识别号|反馈|
| - ------|- ------|
| T223| [一、三、三]|
| T334| [二、一、一]|
我试了两种方法,但都不起作用,任何帮助都将不胜感激。
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)])
4条答案
按热度按时间a11xaf1n1#
你就快找到答案了。
我所做的是:
得到你想要的结果
enter image description here
m3eecexj2#
对我来说,第二个解决方案工作,但必要的字符串转换为列表之前:
使用嵌套字典的第一个解决方案:
编辑:如果列表缺少值,则使用
if-else
语句-将非列表值替换为空列表:x9ybnkn63#
如果你的用例和这个例子一样简单,我不会推荐这个方法,但是,这里有另一个选项,它可以让你项目的其他部分更容易。
df.explode()
您的列(假设它是一个列表而不是文本;否则先将其转换为列表)1.使用
df.replace()
执行替换1.使用
df.groupby()
和df.agg()
将行重新组合在一起对于这个例子,它看起来像这样(假设变量已经像你的问题中那样声明):
sbdsn5lh4#