DataFrame需要帮助来组织DF的列和行

2024-05-12 23:58:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个相当简单的数据帧,但当我试图重新组织它以为另一个应用程序提供特定的行和列顺序时,就会出现问题

我尝试使用多重索引,但未能解决复杂性问题

import pandas as pd

pd.DataFrame([('adc','20030103','USD','KLP','0.41'),
              ('adc','20030103','USD','TRF','0.59'),
              ('adc','20030104','USD','UTC','0.35'),
              ('adc','20030104','USD','ZSE','0.65')],
             columns=('pfl','date','cur','ID','W'))

我希望有这样一个群体:

pfl  adc
date 20030103
cur  USD
ID   W
KLP  0.41
TRF  0.59
pfl adc
date 20030104
cur  USD
ID   W
UTC  0.35
ZSE  0.65

Tags: 数据id应用程序date顺序pdusd行和列
2条回答

stack是您想要的:

df.stack().droplevel(0)

推荐

df.set_index(['pfl', 'date', 'cur'])

                   ID     W
pfl date     cur           
adc 20030103 USD  KLP  0.41
             USD  TRF  0.59
    20030104 USD  UTC  0.35
             USD  ZSE  0.65

您的要求

a = ['pfl', 'date', 'cur']
b = ['ID', 'W']

pd.DataFrame(sum(
    [[*zip(a, k)] + [b] + [*zip(*map(d.get, b))]
     for k, d in df.groupby(a)], []
))

       0         1
0    pfl       adc
1   date  20030103
2    cur       USD
3     ID         W
4    KLP      0.41
5    TRF      0.59
6    pfl       adc
7   date  20030104
8    cur       USD
9     ID         W
10   UTC      0.35
11   ZSE      0.65

相关问题 更多 >