gpt4 book ai didi

python - 如何使用 .map(或其他)更改 Pandas 数据框中多个列的值

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:57 25 4
gpt4 key购买 nike

我有一个大的 df,它具有类似的分类序数值,我想将其更改为数字标度。尝试解释的模拟 df:

data = {'Fruit':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'Weight':[23, 45, 31, 28, 62, 12, 44, 42, 23, 32],
'Taste':['good', 'so so', 'very good', 'awful', 'awful', 'very good', 'good', 'good', 'awful', 'good'],
'Look':['good', 'good', 'so so', 'awful', 'so so', 'very good', 'very good', 'good', 'awful', 'good']}

df = pd.DataFrame(data)

我想将“味道”和“外观”中的值从非常好等更改为 4-1。如果它是一个专栏,我会写:df['Taste'] = df['Taste'].map({'very good': 4, 'good': 3, 'so so': 2 , '糟糕': 1})但这不适用于 df[['Taste', 'Look']] = df[['Taste', 'Look']].map({'very good': 4, 'good': 3, '马马虎虎': 2, '糟糕': 1})我也试过: df.update(df[['Taste', 'Look']].map({'very good': 4, 'good': 3, 'so so': 2, 'awful': 1})) 这是行不通的。

有什么提示和技巧吗?

最佳答案

使用DataFrame.applymap使用 get:

d = {'very good': 4, 'good': 3, 'so so': 2, 'awful': 1}
df[['Taste', 'Look']] = df[['Taste', 'Look']].applymap(d.get)

map 的解决方案是可能的,但需要 stackunstack:

df[['Taste', 'Look']] = df[['Taste', 'Look']].stack().map(d).unstack()

print (df)
Fruit Weight Taste Look
0 1 23 3 3
1 2 45 2 3
2 3 31 4 2
3 4 28 1 1
4 5 62 1 2
5 6 12 4 4
6 7 44 3 4
7 8 42 3 3
8 9 23 1 1
9 10 32 3 3

关于python - 如何使用 .map(或其他)更改 Pandas 数据框中多个列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58713574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com