转换Multindex数据框并按位置更改第二级索引

马库斯·W。

我有一个多索引数据框,其中索引中有两个日期。每个日期组合都有A,B,C,D列的值。

    tradedate          deliverydate            A        B        C      D
2017-09-15 00:00:00    2017-09-11 00:00:00     31.84    27.61   32.3    46.57
                       2017-09-18 00:00:00     39       41.33   42.13   51.655
                       2017-09-25 00:00:00     39.75    40.5    42.89   56.135
                       2017-10-02 00:00:00     41.25    37.85   43.375  54.725
                       2017-10-09 00:00:00     46       40.72   47.875  54.475
2017-09-18 00:00:00    2017-09-11 00:00:00     32.04    28.94   34.18   49.295
                       2017-09-18 00:00:00     40.2     41.615  42.945  50.71
                       2017-09-25 00:00:00     40       39.55   41.815  54.125
                       2017-10-02 00:00:00     41.75    37.265  43.99   52.975
                       2017-10-09 00:00:00     44.75    40.615  48.5    54.285
                       2017-10-16 00:00:00     51.12    42.875  52.625  54.475

我想通过将位置替换级别2中的交付日期,然后使用列名和位置创建列来解决多索引问题。

这些职位看起来像这样:

    tradedate         position     A     B      C       D
2017-09-15 00:00:00    0          31.84  27.61  32.3    46.57
                       1          39     41.33  42.13   51.655
                       2          39.75  40.5   42.89   56.135
                       3          41.25  37.85  43.375  54.725
                       4          46     40.72  47.875  54.475
2017-09-18 00:00:00    0          32.04  28.94  34.18   49.295
                       1          40.2   41.615 42.945  50.71
                       2          40     39.55  41.815  54.125
                       3          41.75  37.265 43.99   52.975
                       4          44.75  40.615 48.5    54.285
                       5          51.12  42.875 52.625  54.475

最终的数据框应该没有多索引,如下所示:

    tradedate        A_0    A_1    A_2      A_3     A_4     A_5     B_0     …   D_4      D_5
2017-09-15 00:00:00 31.84   39     39.75    41.25   46       -      27.61   …   54.475  
2017-09-18 00:00:00 32.04   40.2   40       41.75   44.75   51.12   28.94   …   54.285  54.475

有人可以帮我这些转变吗?

广晃

这样可以:

new_df = (df.reset_index(level=1, drop=True)
   .set_index(df.groupby(level=0).cumcount(), append=True) # this is your step 1
   .unstack(level=1)
)

# rename columns
new_df.columns = [f'{x}_{y}' for x,y in new_df.columns]

# reset_index
new_df = new_df.reset_index()

样本数据:

df = (pd.DataFrame({'a':['x']*4+['y']*3,
                  'b':[8,8,8,9,7,7,7],
                  'A':[1,2,3,4,5,6,7],
                  'B':[7,6,5,4,3,2,1]})
        .set_index(['a','b'])
     )

输出:

   a  A_0  A_1  A_2  A_3  B_0  B_1  B_2  B_3
0  x  1.0  2.0  3.0  4.0  7.0  6.0  5.0  4.0
1  y  5.0  6.0  7.0  NaN  3.0  2.0  1.0  NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Pandas DataFrame中将第二级索引更改为第二级列?

来自分类Dev

第二级多索引上的时间片

来自分类Dev

如何强制第二级多重索引的值?

来自分类Dev

在PHP中获取JSON数据的第二级

来自分类Dev

从第二级链接中提取数据,scrapy

来自分类Dev

如何在第二级以下的多索引数据框中删除第一列,排除一些列

来自分类Dev

如何强制将熊猫数据框的第二级添加到第一级?

来自分类Dev

CheckedListBox中的第二级

来自分类Dev

在第二级索引上有效地组合数据帧

来自分类Dev

在Ruby中从第二级调用第二级函数

来自分类Dev

多索引在表格的右侧打印第二级索引标签

来自分类Dev

如何从第二级父级访问元素?

来自分类Dev

TreeView不显示第二级子级

来自分类Dev

如何使用jQuery each()在JSON数据中获取第二级数组值

来自分类Dev

如何从Stripe JSON对象获取第二级数据

来自分类Dev

熊猫数据框分组,根据分组中的位置添加二级索引(整数)

来自分类Dev

在jQuery中选择元素第二级

来自分类Dev

使用CTE遍历树中的第二级

来自分类Dev

在Drupal 8中打印第二级菜单

来自分类Dev

BreezeJS谓词在第二级扩展实体上

来自分类Dev

HTML和CSS第二级下拉

来自分类Dev

在第二级R功能中的子集

来自分类Dev

第二级包括使用sequelize

来自分类Dev

转到JSON中的第二级数组

来自分类Dev

JSON配对-如何显示第二级ListView

来自分类Dev

基于MultiColumn第二级的圆柱

来自分类Dev

从FetchXML访问第二级链接的实体

来自分类Dev

将数据框中的所有列转换为MultiIndex数据框中的单个二级索引

来自分类Dev

域通用URL重写正则表达式以更改第二级域以包括www

Related 相关文章

热门标签

归档