当前位置: 首页 > 面试题库 >

构造3D Pandas DataFrame

凌通
2023-03-14
问题内容

我在Pandas中构建3D DataFrame有困难。我想要这样的东西

A               B               C
start    end    start    end    start    end ...
7        20     42       52     90       101
11       21                     213      34
56       74                     9        45
45       12

其中AB等是顶级描述符,而startend是子描述符。接下来的数字是成对的,而AB等的对数则不同。观察A有四个这样的对,B只有1个,C有3个。

我不确定如何继续构造此DataFrame。修改此示例并没有给我设计输出:

import numpy as np
import pandas as pd

A = np.array(['one', 'one', 'two', 'two', 'three', 'three'])
B = np.array(['start', 'end']*3)
C = [np.random.randint(10, 99, 6)]*6
df = pd.DataFrame(zip(A, B, C), columns=['A', 'B', 'C'])
df.set_index(['A', 'B'], inplace=True)
df

产生:

                C
 A          B   
 one        start   [22, 19, 16, 20, 63, 54]
              end   [22, 19, 16, 20, 63, 54]
 two        start   [22, 19, 16, 20, 63, 54]
              end   [22, 19, 16, 20, 63, 54]
 three      start   [22, 19, 16, 20, 63, 54]
              end   [22, 19, 16, 20, 63, 54]

有什么办法可以将C中的列表分解成自己的列?

编辑:我的结构C很重要。看起来如下:

 C = [[7,11,56,45], [20,21,74,12], [42], [52], [90,213,9], [101, 34, 45]]

所需的输出是顶部的输出。它表示某个序列内子序列的起点和终点(AB..C是不同的序列)。根据序列本身,有不同数量的子序列可以满足我要寻找的给定条件。其结果是,有不同数量的启动:为结束对AB


问题答案:

首先,我认为您需要填写C来代表缺失值

In [341]: max_len = max(len(sublist) for sublist in C)
In [344]: for sublist in C:
     ...:     sublist.extend([np.nan] * (max_len - len(sublist)))

In [345]: C
Out[345]: 
[[7, 11, 56, 45],
 [20, 21, 74, 12],
 [42, nan, nan, nan],
 [52, nan, nan, nan],
 [90, 213, 9, nan],
 [101, 34, 45, nan]]

然后,转换为numpy数组,转置,并与列一起传递给DataFrame构造函数。

In [288]: C = np.array(C)
In [289]: df = pd.DataFrame(data=C.T, columns=pd.MultiIndex.from_tuples(zip(A,B)))

In [349]: df
Out[349]: 
     one         two       three     
   start  end  start  end  start  end
0      7   20     42   52     90  101
1     11   21    NaN  NaN    213   34
2     56   74    NaN  NaN      9   45
3     45   12    NaN  NaN    NaN  NaN


 类似资料:
  • C 风格的循环通常不必要 你可以写 C 风格的循环,但常常不需要它们。 不要在 foreach 的位置使用它们: for (my $i = 0; $i <= $#foo; $i++) { # BAD foreach (@foo) { # BETTER 不要在 while 的位置使用它们: for (my $i = <STDIN>; $i; $i = <STDIN>) { # BAD whil

  • 这是一款放置型游戏,游戏虽然没什么精美的图片和动听的音乐,但还是有相当的经营乐趣。

  • 在Spring MVC中,使用了UriComponentsBuilder和UriComponents两个类来提供一种构造和加密URI的机制。 比如,你可以通过一个URI模板字符串来填充并加密一个URI: UriComponents uriComponents = UriComponentsBuilder.fromUriString( "http://example.com/hote

  • 我有大量的数据,我想让它成为java中的一个对象(例如。https://haste.razvancode.com/agiyamuyol.json) 我正在运行以下代码: 我得到了这个错误: 我百分之百确定那是我的董事会课程,但是我现在已经工作了几个小时,我仍然不能让它工作。 董事会级别: 如果你对我如何修复它有任何想法,或者我错在哪里,请告诉我。

  • GraphX提供了几种方式从RDD或者磁盘上的顶点和边集合构造图。默认情况下,没有哪个图构造者为图的边重新分区,而是把边保留在默认的分区中(例如HDFS中它们的原始块)。Graph.groupEdges 需要重新分区图,因为它假定相同的边将会被分配到同一个分区,所以你必须在调用groupEdges之前调用Graph.partitionBy object GraphLoader { def ed

  • 本页包含内容: 存储型属性的初始赋值 定制化构造过程 默认构造器 值类型的构造器代理 类的继承和构造过程 可失败构造器 必要构造器 通过闭包和函数来设置属性的默认值 构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务。 构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建

  • 标识符 注释 内嵌文档 保留字 现在Ruby使用的是ASCII字符集。对英文字母的大小区别是敏感的。您可以在任何地方插入空字符或注释,除了标识符和部分字面值的中部。空字符包括space,tab,垂直tab,backspace,回车,换页。换行比较特殊,若换行后内容是继续上一行内容的话,该换行符就是空字符,除此以外的换行符就被解释为语句的切分。 标识符 例: foobar ruby_is_simpl

  • 让我们回顾一下在“多层感知机的简洁实现”一节中含单隐藏层的多层感知机的实现方法。我们首先构造Sequential实例,然后依次添加两个全连接层。其中第一层的输出大小为256,即隐藏层单元个数是256;第二层的输出大小为10,即输出层单元个数是10。我们在上一章的其他 节中也使用了Sequential类构造模型。这里我们介绍另外一种基于Block类的模型构造方法:它让模型构造更加灵活。 继承Bloc