python - 在 Pandas 中将数据从多行拆分为新列
问题描述
我有一个 Pandas 数据框,它在单个列上包含以下格式的混合值:
EmpNo Amount
01-A 22150
Salary 22000
Bonus 150
02-B 20500
Salary 20000
Bonus 500
03-C 15150
Salary 15000
Bonus 150
如何按以下格式将数据分成不同的列?
EmpNo Salary Bonus Total
01-A 22000 150 22150
02-B 20000 500 20500
03-C 15000 150 15150
解决方案
不是最好的解决方案,但您可以继续使用它,直到找到更好的解决方案。
#data
index = ['01-A', 'Salary', 'Bonus', '02-B', 'Salary', 'Bonus']
amount = [22150, 22000, 150, 20500, 20000, 500]
df = pd.DataFrame(amount, index)
#extract data per variable
salary = df[df.index == 'Salary '].reset_index()
bonus = df[df.index == 'Bonus'].reset_index()
total = df[(df.index != 'Salary ') & (df.index != 'Bonus')].reset_index()
dfnew = pd.concat([salary[0], bonus[0], total[0]], axis=1)
dfnew.columns = ['salary', 'bonus', 'total']
dfnew.index = total['index']
推荐阅读
- python - 如何在 Python 解释器中更新导入的脚本?
- svelte - 从组件和插槽中的组件传递道具
- c# - 在 C# 中使用 BinaryFormatter 转换从 C 服务器发送的数据
- computer-vision - 我在自定义视觉中创建了一个新模型。我如何在计算机视觉中使用这个模型?
- javascript - 如何避免由于 NaN 或具有 rowcallback toExponential(2) 的列中的其他非数值导致的错误
- javascript - 如何使用 jquery 添加闪烁效果以完成表格行?
- google-cloud-platform - 跟踪截止日期以发送提醒的设计模式
- node.js - NodeJS:在上传到 S3 之前如何压缩流?
- virtual-machine - 检测远程桌面连接窗口的最小化
- java - 无法使用 recyclerview 上的改造显示来自 API 的数据