使用Pandas pivot为每列设置单独的行格式?

hmae6n7t  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(129)

考虑以下数据:

data = [
    {
        "Account": "Cash",
        "amount": 10,
        "direction": "debit",
    },
    {
        "Account": "Cash",
        "amount": 10,
        "direction": "credit",
    }
]

df = pd.DataFrame.from_dict(data)
df.pivot(index="Account", columns="direction", values="amount")

pivot()的值输出如下:

direction  credit  debit
Account                 
Cash           10     10

然而,我真正想要的是类似于:

direction  credit  debit
Account                 
Cash           10     
Cash                  10

也就是说,我希望所有的“贷项”行作为“借项”放在单独的一行上,以便进行格式化(即,当使用to_table()to_csv()时)。
我尝试过使用to_dict(),操作结果,并使用from_dict()重新创建一个 Dataframe ,但这对于多索引来说变得相当棘手。
我能想到的唯一方法是将数据作为字典,手动格式化并输出。在pandas中有没有一种方法可以实现这种分离?

4urapxun

4urapxun1#

让我们试试set_index(..., append=True)unstack

df.set_index(['Account', 'direction'], append=True)['amount'].unstack(-1)

direction  credit  debit
  Account               
0 Cash        NaN   10.0
1 Cash       10.0    NaN

使用append=True,我们可以使用现有索引区分每个“Cash”行,以便在旋转/取消堆栈时它们不会折叠成一行

相关问题