如何创建二维以上的 pandas 数据框?

2024-02-09

我希望能够创建n-dimensional数据框。我听说过一种使用 3D 数据帧的方法panels in pandas但是,如果可能的话,我想通过将不同的数据集组合成一个,将维度扩展到超过 3 个维度超级数据框

我尝试了这个,但我不知道如何在我的测试数据集上使用这些方法 - >构建 3D Pandas 数据框 https://stackoverflow.com/questions/24290495/constructing-3d-pandas-dataframe

另外,这对我的情况没有帮助 ->Pandas Dataframe 或 Panel 到 3d numpy 数组 https://stackoverflow.com/questions/23478297/pandas-dataframe-or-panel-to-3d-numpy-array

我用任意轴数据制作了一个随机测试数据集,试图模仿真实情况;有 3 个轴(即患者、年份和样本)。我尝试将一堆数据框添加到列表中,然后用它制作一个数据框,但它不起作用:(我什至尝试了panel如上面的第二个链接所示,但我也无法让它工作。

有谁知道如何创建带有标签的 N 维 pandas 数据框?

我尝试的第一种方法:

#Reproducibility
np.random.seed(1618033)

#Set 3 axis labels/dims
axis_1 = np.arange(2000,2010) #Years
axis_2 = np.arange(0,20) #Samples
axis_3 = np.array(["patient_%d" % i for i in range(0,3)]) #Patients

#Create random 3D array to simulate data from dims above
A_3D = np.random.random((years.size, samples.size, len(patients))) #(10, 20, 3)

#Create empty list to store 2D dataframes (axis_2=rows, axis_3=columns) along axis_1
list_of_dataframes=[]

#Iterate through all of the year indices
for i in range(axis_1.size):
    #Create dataframe of (samples, patients)
    DF_slice = pd.DataFrame(A_3D[i,:,:],index=axis_2,columns=axis_3)
    list_of_dataframes.append(DF_slice)
#     print(DF_slice) #preview of the 2D dataframes "slice" of the 3D array
#           patient_0  patient_1  patient_2
#      0    0.727753   0.154701   0.205916
#      1    0.796355   0.597207   0.897153
#      2    0.603955   0.469707   0.580368
#      3    0.365432   0.852758   0.293725
#      4    0.906906   0.355509   0.994513
#      5    0.576911   0.336848   0.265967
#     ...
#     19   0.583495   0.400417   0.020099

# DF_3D = pd.DataFrame(list_of_dataframes,index=axis_2, columns=axis_1)
# Error
# Shape of passed values is (1, 10), indices imply (10, 20)

我尝试的第二种方法:

DF = pd.DataFrame(axis_3,columns=axis_2) 
#Error:
#Shape of passed values is (1, 3), indices imply (20, 3)

# p={}
# for i in axis_1:
#     p[i]=DF
# panel= pd.Panel(p)

我想我可以做这样的事情,但我真的很喜欢pandas并且宁愿使用他们的方法之一(如果存在):

#Set data for query
query_year = 2007
query_sample = 15
query_patient = "patient_1"

#Index based on query
A_3D[
     (axis_1 == query_year).argmax(),
     (axis_2 == query_sample).argmax(),
     (axis_3 == query_patient).argmax()
]
#0.1231212416981845

以这种方式访问​​数据会很棒:

DF_3D[query_year][query_sample][query_patient]
#Where DF_3D[query_year] would give a list of 2D arrays (row=sample, col=patient)
# DF_3D[query_year][query_sample] would give a 1D vector/list of patient data for a particular year, of a particular sample.
# and DF_3D[query_year][query_sample][query_patient] would be a particular sample of a particular patient of a particular year

您可能最好使用数据的二维表示,但使用 MultiIndexes 作为索引、列或两者,而不是使用 n 维面板。

例如:

np.random.seed(1618033)

#Set 3 axis labels/dims
years = np.arange(2000,2010) #Years
samples = np.arange(0,20) #Samples
patients = np.array(["patient_%d" % i for i in range(0,3)]) #Patients

#Create random 3D array to simulate data from dims above
A_3D = np.random.random((years.size, samples.size, len(patients))) #(10, 20, 3)

# Create the MultiIndex from years, samples and patients.
midx = pd.MultiIndex.from_product([years, samples, patients])

# Create sample data for each patient, and add the MultiIndex.
patient_data = pd.DataFrame(np.random.randn(len(midx), 3), index = midx)

>>> patient_data.head()
                         0         1         2
2000 0 patient_0 -0.128005  0.371413 -0.078591
       patient_1 -0.378728 -2.003226 -0.024424
       patient_2  1.339083  0.408708  1.724094
     1 patient_0 -0.997879 -0.251789 -0.976275
       patient_1  0.131380 -0.901092  1.456144

一旦有了这种形式的数据,处理它就相对容易了。例如:

>>> patient_data.unstack(level=0).head()  # Years.
                    0                                                                                              ...            2                                                                                          
                 2000      2001      2002      2003      2004      2005      2006      2007      2008      2009    ...         2000      2001      2002      2003      2004      2005      2006      2007      2008      2009
0 patient_0 -0.128005  0.051558  1.251120  0.666061 -1.048103  0.259231  1.535370  0.156281 -0.609149  0.360219    ...    -0.078591 -2.305314 -2.253770  0.865997  0.458720  1.479144 -0.214834 -0.791904  0.800452  0.235016
  patient_1 -0.378728 -0.117470 -0.306892  0.810256  2.702960 -0.748132 -1.449984 -0.195038  1.151445  0.301487    ...    -0.024424  0.114843  0.143700  1.732072  0.602326  1.465946 -1.215020  0.648420  0.844932 -1.261558
  patient_2  1.339083 -0.915771  0.246077  0.820608 -0.935617 -0.449514 -1.105256 -0.051772 -0.671971  0.213349    ...     1.724094  0.835418  0.000819  1.149556 -0.318513 -0.450519 -0.694412 -1.535343  1.035295  0.627757
1 patient_0 -0.997879 -0.242597  1.028464  2.093807  1.380361  0.691210 -2.420800  1.593001  0.925579  0.540447    ...    -0.976275  1.928454 -0.626332 -0.049824 -0.912860  0.225834  0.277991  0.326982 -0.520260  0.788685
  patient_1  0.131380  0.398155 -1.671873 -1.329554 -0.298208 -0.525148  0.897745 -0.125233 -0.450068 -0.688240    ...     1.456144 -0.503815 -1.329334  0.475751 -0.201466  0.604806 -0.640869 -1.381123  0.524899  0.041983

为了选择数据,请参阅文档多重索引 http://pandas.pydata.org/pandas-docs/stable/advanced.html#multiindex-advanced-indexing.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建二维以上的 pandas 数据框? 的相关文章

  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 根据 Pandas 中的列表对多列进行排序

    感谢有关如何根据 pandas 中的倍数列表对给定多列进行排序的任何提示 如下所示 import pandas as pd sort a a d e sort b s1 s3 s6 sort c t1 t2 t3 df pd DataFra
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 操作错误:(sqlite3.OperationalError) SQL 变量太多,同时将 SQL 与数据帧一起使用

    我有一个熊猫数据框 如下所示 activity User Id 0 VIEWED MOVIE 158d292ec18a49 1 VIEWED MOVIE 158d292ec18a49 2 VIEWED MOVIE 158d292ec18a4
  • C 中函数参数中的固定数组或指针之间的区别?

    之间有区别吗 void draw line float p0 2 float p1 2 float color 4 和这个 void draw line float p0 float p1 float color in C 项目清单 C 和
  • 仅将 pandas df 的前 N ​​行写入 csv

    如何仅将前 N 行或从 P 到 Q 行从 pandas 数据帧写入 csv 而不首先对 df 进行子集化 由于内存问题 我无法对要导出的数据进行子集化 我正在考虑一个逐行写入 csv 的函数 谢谢 Use head https pandas
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • 如何在 pandas 中读取并标准化以下 json?

    我在 stackoverflow 中使用 pandas 看到了很多 json 读取问题 但我仍然无法解决这个简单的问题 Data session id 0 X061RFWB06K9V 1 5AZ2X2A9BHH5U unix timesta
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 如何在 R 中合并同名列表中的数据框?

    我有一个包含很多数据框的列表 如果它们具有相同的名称 我想合并它们 即合并所有具有相同名称 a 和 b 的数据框 像这样 a lt aaaaa b lt bbbbb c lt ccccc g lt list df1 lt data fram
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 尝试使用 Javascript 解决对称差异

    我正在尝试找出对称的解决方案 使用 javascript 完成以下任务的差异 目标 接受未指定数量的数组作为参数 保留数组中数字的原始顺序 不删除单个数组中数字的重复项 删除数组中出现的重复项 因此 例如 如果输入是 1 1 2 6 2 3

随机推荐

  • 找不到“org.eclipse.persistence”Maven 依赖项

    我使用 m2eclipse maven 插件安装了 Eclipse Helios 我想使用 JPA 创建一个应用程序 所以 我所做的是 新建 gt Maven 项目 然后选择 Maven 默认原型 问题是我想添加我找不到的 org ecli
  • Java中synchronized关键字的记忆效应

    这个问题之前可能已经得到解答 但由于问题的复杂性 我需要确认 所以我重新表述这个问题 问题1 当线程进入同步块时 内存屏障将包括所触及的任何字段 而不仅仅是我同步的对象的字段 因此 如果在同步块内修改许多对象 则会在线程内存缓存之间进行大量
  • 如何通过Javascript更改CSS类样式?

    根据我正在阅读的书 当你使用Javascript时 最好按类更改CSS 但如何呢 有人可以为此提供一个示例片段吗 假设您有 div class oldclass text div 以及以下样式 oldclass color blue new
  • 是否有 VBA 代码来查看 Enterprise Project 2013 文件在打开之前是否已签出?

    试图帮助我们的 Project 2013 用户使用一些 VBA 代码 但我们似乎无法找到答案来查找是否使用 VBA 在我们的 PWA 服务器上检出 Project 2013 文件 它们基本上有一个项目列表 设置为单个项目文件中的任务 VBA
  • Android 定时器摆动

    我需要创建一个计时器来定期更新用户界面 但 Swing Timer 类在 Android 上不可用 我该如何解决这个问题 我会避免创建线程 然后使用 java util 包中的 Timer 类 你可以使用Handler http devel
  • 如何在 Mac OS X 上获取内存泄漏的行编号堆栈跟踪?

    我已经成功获得了 Xcodeleaks报告我的命令行 GCC Ada 程序中的泄漏的工具 通过添加delay 11 0 最后让leaks进行检查 然后 export MallocStackLogging 1 foobar leaks foo
  • 正则表达式中的[^.]*是什么意思?

    我试图从以下文本中获取 482 75 span 482 75 span 我使用的正则表达式是 regex span span 它起作用了 但我不明白的是为什么 可以在这里匹配 aapl 我的理解是 表示除换行符之外的任何字符 表示否定 因此
  • 如何在 ASP.NET Core MVC 上正确设置 cookie 的过期日期时间

    我正在尝试从后端 Asp Net core 向浏览器设置一个 Cookie 该 Cookie 应在第二天同一时间减去 5 分钟后过期 这是来自控制器的 C 代码 HttpContext Response Cookies Append MyC
  • Erlang - 随机数生成器

    我正在使用以下内容生成一个近乎随机的数字 3 gt erlang ref to list make ref Ref lt 0 0 0 36 gt 我想要的是00036 嗯 这就是我在上一篇文章中被告知我可以做的事情 我发现从 make re
  • 是否可以将数据导入Hive表而不复制数据

    我将日志文件以文本形式存储在 HDFS 中 当我将日志文件加载到 Hive 表中时 所有文件都会被复制 我可以避免所有文本数据存储两次吗 编辑 我通过以下命令加载它 LOAD DATA INPATH user logs mylogfile
  • 防止转换 HTML 实体时出现工具提示

  • 组件 props 中的函数参数不兼容

    我有一个组件 它接受一个项目列表 已知有一个 ID 以及一个过滤这些项目的函数 具有 ID 的类型是项目的通用类型 所有项目都将具有 但更具体的项目将包括其他道具 type GenericItem id string type Specif
  • 为什么给字符串添加null没有异常?

    为什么这不抛出异常不明白 obj 为 null object obj null Console WriteLine Hello World obj 这编译为 Console WriteLine String Concat Hello Wor
  • 如何使用CSS仅显示字符串的一部分

    我希望能够显示最多 10 个字符的字符串 如果字符串超过 10 个字符 我想在末尾附加 例如 如果我有字符串 helloworldmynameisryan 我希望它像这样显示 helloworld 我只是在 div 中显示我的字符串 如下所
  • 如何将 IAM 角色添加到 AWS 中的现有实例?

    我想添加一个IAM对现有角色的作用EC2AWS 中的实例 我尝试使用AWS CLI 但是 我找不到办法做到这一点 自 AWS CLI 起v1 11 46 昨天刚刚发布 参见变更日志文件 https github com aws aws cl
  • ASP.NET MVC AntiForgeryToken 和缓存

    我目前正在开发一个 ASP NET MVC 项目 并遇到了一个看起来很奇怪的错误 在 ASP NET MVC 模板表单中 始终会获得 AntiForgeryToken 因此我相信这是最佳实践 然而 AntiForgeryTokens 似乎不
  • 为什么环境变量在 FOR 循环内没有更新?

    我有一个正在扫描文件的批处理文件URLs txt对于每个 url 运行它并下载文件 我遇到的问题是 FOR 循环中的环境变量 我在用cat sed and awk获取 url 的最后两部分 以便我可以提供文件名 问题是环境变量在第一次运行后
  • Ojdbc8 jars升级到21.1.0.0抛出Nosuchmethod异常UCPservletContextListener init

    Ojdbc8 ons ucp jar 已升级到 21 1 0 0 版本 当尝试在 tomcat 服务器上启动应用程序时 它抛出 Nosuchmethod 异常 登录Tomcat的localhost log文件 应用程序尝试在启动期间建立数据
  • 套接字编程-setsockopt:协议不可用?

    我正在用 C 语言进行一些基本的套接字编程 并且在尝试运行代码的每台计算机上都会遇到此错误 代码编译得很好 但是当我尝试运行它时 我收到错误setsockopt 协议不可用 这似乎不是一个很常见的错误 但我尝试运行它的每台计算机上都会遇到这
  • 如何创建二维以上的 pandas 数据框?

    我希望能够创建n dimensional数据框 我听说过一种使用 3D 数据帧的方法panels in pandas但是 如果可能的话 我想通过将不同的数据集组合成一个 将维度扩展到超过 3 个维度超级数据框 我尝试了这个 但我不知道如何在