我在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
Run Code Online (Sandbox Code Playgroud)
where A,B等是顶级描述符,start并且end是subdescriptors.随后的数字是成对的,并且没有相同数量的对A,B等等.观察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), …Run Code Online (Sandbox Code Playgroud) 建立:
pdf = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))
pdf['a'][2:]=pdf['a'][0]
pdf['a'][:2]=pdf['a'][1]
pdf.set_index(['a','b'])
Run Code Online (Sandbox Code Playgroud)
输出:
c d e
a b
0.439502 0.115087 0.832546 0.760513 0.776555
0.609107 0.247642 0.031650 0.727773
0.995370 0.299640 0.053523 0.565753 0.857235
0.392132 0.832560 0.774653 0.213692
Run Code Online (Sandbox Code Playgroud)
每个数据系列按索引ID分组,a并b表示其他功能的时间索引a.有没有办法让大熊猫产生反映a分组的numpy 3d数组?目前它将数据读取为二维pdf.shape输出(4, 5).我想要的是数组是变量形式:
array([[[-1.38655912, -0.90145951, -0.95106951, 0.76570984],
[-0.21004144, -2.66498267, -0.29255182, 1.43411576],
[-0.21004144, -2.66498267, -0.29255182, 1.43411576]],
[[ 0.0768149 , -0.7566995 , -2.57770951, 0.70834656],
[-0.99097395, -0.81592084, -1.21075386, 0.12361382]]])
Run Code Online (Sandbox Code Playgroud)
是否有本地Pandas方式来做到这一点?请注意,a实际数据中每个分组的行数是可变的,因此我不能只是转置或重塑pdf.values.如果没有本地方式,那么从数十万行和数百列迭代构建数组的最佳方法是什么?
我是 Python 新手,我正在尝试了解如何使用 Pandas DataFrames 操作数据。我搜索了类似的问题,但没有看到任何满足我的确切需求的问题。如果这是重复的,请指出正确的帖子。
所以我有多个具有完全相同的形状、列和索引的 DataFrame。我如何将它们与标签结合起来,以便我可以轻松访问带有任何列/索引/标签的数据?
例如,在下面的设置之后,如何将 df1 和 df2 放入一个 DataFrame 并用名称“df1”和“df2”标记它们,以便我可以像 df['A']['df1'] 这样的方式访问数据['b'],并获取 df 的行数?
>>> import numpy as np
>>> import pandas as pd
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'], index=['a', 'b'])
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'], index=['a', 'b'])
>>> df1
A B
a 1 2
b 3 4
>>> df2
A B
a 5 6
b 7 8
Run Code Online (Sandbox Code Playgroud)