python - 如何使用 pd.melt 转换数据框

标签 python pandas

例如这是我的数据框

df = pd.DataFrame([['Bob', 'lunch', 70], 
                   ['Bob', 'dinner', 160], 
                   ['Sara', 'lunch', 150], 
                   ['Sara', 'dinner', 220]], 
                  columns=['Name', 'Meal', 'Cost'])
   Name    Meal  Cost
0   Bob   lunch    70
1   Bob  dinner   160
2  Sara   lunch   150
3  Sara  dinner   220

如何使用 pd.melt 或任何其他方式将数据帧转换为以下内容?

   Name   Meal_1  Cost_1   Meal_2  Cost_2
0   Bob   lunch       70   dinner     160
1  Sara   lunch      150   dinner     220

最佳答案

a) 这看起来更像是 pivot() 而不是 melt() 的工作。

df.pivot(index=['Name'], columns=['Meal'], values=['Cost'])

结果是一个数据透视表:

       Cost
Meal dinner lunch
Name
Bob     160    70
Sara    220   150

不完全是您想要的,但也许更好。

b) 备选方案:宽表

     Meal_1  Cost_1  Meal_2  Cost_2
Name
Bob   lunch      70  dinner     160
Sara  lunch     150  dinner     220

...你可以用这样的代码得到:

df = df.set_index('Name')
lunch = df.loc[df.Meal.eq('lunch')]
dinner = df.loc[df.Meal.eq('dinner')]
df = pd.concat([lunch, dinner], axis=1)
df.columns = ['Meal_1', 'Cost_1', 'Meal_2', 'Cost_2']

关于python - 如何使用 pd.melt 转换数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72628294/

相关文章:

python - 即使安装了 BeautifulSoap 的 ImportError

python - Pandas :替换字符串中的子字符串

python - 在 python 的 setup.py 中使用 "provides"关键字参数

python - 使 Python 类方法可在 Mongodb 中搜索

Python 多处理类型错误

python - 创建具有多个子类 Series 的 pandas 数据框

python - Pandas - 创建具有相同优先级类别的分类对象

python - 如何将数据帧的行与二维数组列表进行比较 - Python

python - PySpark 分发模块导入

python - 如何使用 scikit-learn API 实现元估计器?