pandas 中的多维/嵌套数据帧/数据集/面板 [英] Multi-dimensional/Nested DataFrame/Dataset/Panel in Pandas
本文介绍了 pandas 中的多维/嵌套数据帧/数据集/面板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将一些多维数据存储在大熊猫数据框或面板中,以便我能够返回,例如:
I would like to store some multidimensional data in a pandas dataframe or panel such that I would like to be able to return for example:
- A跑步者A的所有时间,比赛A
- 某一年的A组的所有时间(和名称)都说2015年
示例数据将如下所示,请注意,并不是所有赛跑者都将拥有所有年份或所有种族的数据。
Example data would look something like this, note that not all runners will have data for all years or all races.
可以任何人都建议使用熊猫或其他任何方式做一个好办法?
Could anyone suggest a good way to do this with Pandas or any other way?
Name | Gender | Age
Runner A | Male | 35
Race A
Year | Time
2015 | 2:35:09
2014 | 2:47:34
2013 | 2:50:12
Race B
Year | Time
2013 | 1:32:07
Runner B | Male | 29
Race A
Year | Time
2015 | 3:05:56
Runner C | Female | 32
Race B
Year | Time
1998 | 1:29:43
推荐答案
我想你可以使用 Multiindex
,然后通过切片机:
I think you can use Multiindex
and then select data by slicers:
import pandas as pd
df = pd.DataFrame({'Time': {('Runner A', 'Male', 35, 'Race A', 2014): '2:47:34', ('Runner C', 'Female', 32, 'Race B', 1998): '1:29:43', ('Runner B', 'Male', 29, 'Race A', 2015): '3:05:56', ('Runner A', 'Male', 35, 'Race A', 2013): '2:50:12', ('Runner A', 'Male', 35, 'Race B', 2013): '1:32:07', ('Runner A', 'Male', 35, 'Race A', 2015): '2:35:09'}})
print (df)
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
Race B 2013 1:32:07
Runner B Male 29 Race A 2015 3:05:56
Runner C Female 32 Race B 1998 1:29:43
#index has to be fully lexsorted
df.sort_index(inplace=True)
print (df)
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
Race B 2013 1:32:07
Runner B Male 29 Race A 2015 3:05:56
Runner C Female 32 Race B 1998 1:29:43
idx = pd.IndexSlice
print (df.loc[idx['Runner A',:,:,'Race A',:],:])
Time
Runner A Male 35 Race A 2013 2:50:12
2014 2:47:34
2015 2:35:09
print (df.loc[idx[:,:,:,'Race A',2015],:])
Time
Runner A Male 35 Race A 2015 2:35:09
Runner B Male 29 Race A 2015 3:05:56
这篇关于 pandas 中的多维/嵌套数据帧/数据集/面板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文