将索引值移动到pandas数据框中的列名称中

丹尼尔·科特

我正在尝试重塑多索引数据框,以便将索引第二级的值合并到新数据框中的列名称中。在下面的数据框中,我想将A和B从“源”移到各列中,以便有s1_A,s1_B,s2_A,...,s3_B。

我尝试过显式创建新数据框的结构,并使用嵌套的for循环填充它以重新分配值,但是这样做的速度非常慢。我已经尝试了pandas API的许多功能,但是运气不佳。任何帮助将非常感激。

midx = pd.MultiIndex.from_product( [[1,2,3], ['A','B']], names=["sample","source"])
df = pd.DataFrame( index=midx, columns=['s1', 's2', 's3'], data=np.ndarray(shape=(6,3)) )

>>> df
                s1   s2   s3
sample source               
1      A       1.2  3.4  5.6
       B       1.2  3.4  5.6
2      A       1.2  3.4  5.6
       B       1.2  3.4  5.6
3      A       1.2  3.4  5.6
       B       1.2  3.4  5.6


# Want to build a new data frame thatlooks like this:
>>> df_new
       s1_A   s1_B   s2_A   s2_B   s3_A   s3_B
sample                
1      1.2    1.2    3.4    3.4    5.6    5.6
2      1.2    1.2    3.4    3.4    5.6    5.6
3      1.2    1.2    3.4    3.4    5.6    5.6

这是我目前的操作方式。它非常慢,而且我知道必须有一种更惯用的方法来处理熊猫,但是我对它的API还是陌生的:

substances = df.columns.values
sources = ['A','B']
subst_and_src = sorted([ subst + "_" + src for src in sources for subst in substances ])

df_new = pd.DataFrame(index=df.index.unique(0), columns=subst_and_src)

# Runs forever
for (sample, source) in df.index:
    for subst in df.columns:
        df_new[sample, subst + "_" + source] = df.loc[(sample,source), subst]
安德烈·凯斯利(Andrej Kesely)
df = df.unstack(level=1)
df.columns = ['_'.join(col).strip() for col in df.columns.values]
print(df)

印刷品:

                 s1_A           s1_B  s2_A  s2_B           s3_A           s3_B
sample                                                                        
1       4.665045e-310  6.904071e-310   0.0   0.0  6.903913e-310  2.121996e-314
2       6.904071e-310   0.000000e+00   0.0   0.0  3.458460e-323   0.000000e+00
3        0.000000e+00   0.000000e+00   0.0   0.0   0.000000e+00   0.000000e+00

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将部分单元格值移动到数据框的列名称

来自分类Dev

将列名称设置为数据框中的索引

来自分类Dev

根据条件将数据框的值移动到列表中

来自分类Dev

如果列名== Year并且值为NaN pandas,则将数据框中的值向左移动

来自分类Dev

根据Pandas中的索引和条件将数据从列移动到行

来自分类Dev

在多索引熊猫数据框中创建列名称列表

来自分类Dev

使用索引号同时更改pandas数据框中的多个列名称(并非所有colmn名称)

来自分类Dev

Python熊猫将数据框的列向下移动到行中(要重置列的索引吗?)

来自分类Dev

通过将列名称与字典匹配来填充数据框中的值

来自分类Dev

在数据框中打印列名称和值

来自分类Dev

根据数据框中的索引值将Pandas数据框拆分为多个Excel工作表

来自分类Dev

访问pandas数据框中的所有列名称

来自分类Dev

按列名称在数据框中拆分多索引数据框

来自分类Dev

熊猫groupby结果-将一些分组的列值移动到新数据框的行中

来自分类Dev

Python Pandas将Na或Null值移动到新数据框

来自分类Dev

根据数据框中的部分索引名称对列值求和

来自分类Dev

当列名称为整数时索引pandas数据框

来自分类Dev

Python - 重构数据框,将列名移动到行,重塑数据框

来自分类Dev

遍历数据框的列,然后将值除以另一个数据框中的列名索引的值?

来自分类Dev

如何将存储在列表中的数据框的名称放入每个数据框的列名称中?

来自分类Dev

根据行索引值从pandas数据框列中求和

来自分类Dev

在列相同的pandas数据框中查找索引值

来自分类Dev

重命名Pandas数据框中的索引值

来自分类Dev

在列相同的pandas数据框中查找索引值

来自分类Dev

根据行索引值从pandas数据框列中求和

来自分类Dev

在 Pandas 数据框中创建重复值索引

来自分类Dev

选择行值不为空的列名称pandas数据框

来自分类Dev

如何将值移动到R中另一个数据框中的空单元格?

来自分类Dev

向列表中多个数据框中的选定列名称添加列值前缀

Related 相关文章

  1. 1

    将部分单元格值移动到数据框的列名称

  2. 2

    将列名称设置为数据框中的索引

  3. 3

    根据条件将数据框的值移动到列表中

  4. 4

    如果列名== Year并且值为NaN pandas,则将数据框中的值向左移动

  5. 5

    根据Pandas中的索引和条件将数据从列移动到行

  6. 6

    在多索引熊猫数据框中创建列名称列表

  7. 7

    使用索引号同时更改pandas数据框中的多个列名称(并非所有colmn名称)

  8. 8

    Python熊猫将数据框的列向下移动到行中(要重置列的索引吗?)

  9. 9

    通过将列名称与字典匹配来填充数据框中的值

  10. 10

    在数据框中打印列名称和值

  11. 11

    根据数据框中的索引值将Pandas数据框拆分为多个Excel工作表

  12. 12

    访问pandas数据框中的所有列名称

  13. 13

    按列名称在数据框中拆分多索引数据框

  14. 14

    熊猫groupby结果-将一些分组的列值移动到新数据框的行中

  15. 15

    Python Pandas将Na或Null值移动到新数据框

  16. 16

    根据数据框中的部分索引名称对列值求和

  17. 17

    当列名称为整数时索引pandas数据框

  18. 18

    Python - 重构数据框,将列名移动到行,重塑数据框

  19. 19

    遍历数据框的列,然后将值除以另一个数据框中的列名索引的值?

  20. 20

    如何将存储在列表中的数据框的名称放入每个数据框的列名称中?

  21. 21

    根据行索引值从pandas数据框列中求和

  22. 22

    在列相同的pandas数据框中查找索引值

  23. 23

    重命名Pandas数据框中的索引值

  24. 24

    在列相同的pandas数据框中查找索引值

  25. 25

    根据行索引值从pandas数据框列中求和

  26. 26

    在 Pandas 数据框中创建重复值索引

  27. 27

    选择行值不为空的列名称pandas数据框

  28. 28

    如何将值移动到R中另一个数据框中的空单元格?

  29. 29

    向列表中多个数据框中的选定列名称添加列值前缀

热门标签

归档