获取和分析数据框的索引列
Getting and analyzing the index columns of a dataframe
我有一个大型数据框,我在其中将各种元数据存储在多索引中(另请参阅 )。
我的数据框基本上是这样的:
location zero A B C and so on
type zero MUR RHE DUJ RHE RHE
name zero foo bar baz boo far
1930-03-01 0 2.1 3.4 9.4 5.4 5.5
1930-04-01 0 3.1 3.6 7.3 6.7 9.5
1930-05-01 0 2.5 9.1 8.0 1.1 8.1
and so on
这样我就可以很容易地 select 例如所有 DUJ
数据类型 mydf.xs('DUJ', level = 'type', axis = 1)
.
但是 我如何访问 type
索引中的字符串并消除双打并可能得到一些静态信息?
我正在寻找类似
的输出
types('MUR', 'RHE', 'DUJ')
and/or
types:
DUJ 1
MUR 1
RHE 3
给我一个数据类型列表以及它们出现的频率。
我可以通过
访问索引
[In]mytypes = mydf.columns.get_level_values(1)
[In]mytypes
[Out]Index([u'zero', u'MUR', u'RHE', u'DUJ', u'RHE', u'RHE'], dtype='object')
但我想不出任何简单的方法来处理这些信息,尤其是考虑到我的真实数据集将 return 1500 个条目。我的第一个想法很简单 mytypes.sort()
但显然我 Cannot sort an 'Index' object
.
能够描述你的数据集对我来说似乎是一件相当重要的事情,所以我希望 pandas 中有一些内置的东西,但我似乎找不到它。而且MultiIndex documentation似乎只关心构建和设置索引,而不关心分析它们。
Index
对象有这个 value_counts
的方法所以你可以调用:
mytypes.value_counts()
这将return索引中的索引值和计数作为值。
您的链接问题示例:
In [3]:
header = [np.array(['location','location','location','location2','location2','location2']),
np.array(['S1','S2','S3','S1','S2','S3'])]
df = pd.DataFrame(np.random.randn(5, 6), index=['a','b','c','d','e'], columns = header )
df.columns
Out[3]:
MultiIndex(levels=[['location', 'location2'], ['S1', 'S2', 'S3']],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
In [4]:
df.columns.get_level_values(1).value_counts()
Out[4]:
S1 2
S2 2
S3 2
dtype: int64
我有一个大型数据框,我在其中将各种元数据存储在多索引中(另请参阅
我的数据框基本上是这样的:
location zero A B C and so on
type zero MUR RHE DUJ RHE RHE
name zero foo bar baz boo far
1930-03-01 0 2.1 3.4 9.4 5.4 5.5
1930-04-01 0 3.1 3.6 7.3 6.7 9.5
1930-05-01 0 2.5 9.1 8.0 1.1 8.1
and so on
这样我就可以很容易地 select 例如所有 DUJ
数据类型 mydf.xs('DUJ', level = 'type', axis = 1)
.
但是 我如何访问 type
索引中的字符串并消除双打并可能得到一些静态信息?
我正在寻找类似
的输出types('MUR', 'RHE', 'DUJ')
and/or
types:
DUJ 1
MUR 1
RHE 3
给我一个数据类型列表以及它们出现的频率。
我可以通过
访问索引[In]mytypes = mydf.columns.get_level_values(1)
[In]mytypes
[Out]Index([u'zero', u'MUR', u'RHE', u'DUJ', u'RHE', u'RHE'], dtype='object')
但我想不出任何简单的方法来处理这些信息,尤其是考虑到我的真实数据集将 return 1500 个条目。我的第一个想法很简单 mytypes.sort()
但显然我 Cannot sort an 'Index' object
.
能够描述你的数据集对我来说似乎是一件相当重要的事情,所以我希望 pandas 中有一些内置的东西,但我似乎找不到它。而且MultiIndex documentation似乎只关心构建和设置索引,而不关心分析它们。
Index
对象有这个 value_counts
的方法所以你可以调用:
mytypes.value_counts()
这将return索引中的索引值和计数作为值。
您的链接问题示例:
In [3]:
header = [np.array(['location','location','location','location2','location2','location2']),
np.array(['S1','S2','S3','S1','S2','S3'])]
df = pd.DataFrame(np.random.randn(5, 6), index=['a','b','c','d','e'], columns = header )
df.columns
Out[3]:
MultiIndex(levels=[['location', 'location2'], ['S1', 'S2', 'S3']],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
In [4]:
df.columns.get_level_values(1).value_counts()
Out[4]:
S1 2
S2 2
S3 2
dtype: int64