首页 > 解决方案 > 在 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          

标签: pythonpandasdataframedata-analysis

解决方案


不是最好的解决方案,但您可以继续使用它,直到找到更好的解决方案。

#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']

结果


推荐阅读