ndr*_*drs 2 python indexing multi-index dataframe pandas
所以我确定这很简单,但我对 python/pandas 还很陌生。
我想将我的 Multiindex 的某个列(我的测量的名称)作为一个列表,以便稍后在 for 循环中使用它来命名和保存我的图。我非常有信心从我的数据框中获取我需要的数据,但我不知道如何从我的索引中获取某些列。
所以实际上在写这个问题的时候我有点想出了答案,但它看起来仍然有点笨拙。必须有一个直接的命令来做到这一点。那将是我的代码:
a = df.index.get_level_values('File')
a = a.drop_duplicates()
a = a.values
Run Code Online (Sandbox Code Playgroud)
jpp*_*jpp 10
您可以直接访问每个级别的独特元素MultiIndex:
df = pd.DataFrame([['A', 'W', 1], ['B', 'X', 2], ['C', 'Y', 3],
['D', 'X', 4], ['E', 'Y', 5]])
df = df.set_index([0, 1])
a = df.index.levels[1]
print(a)
Index(['W', 'X', 'Y'], dtype='object', name=1)
Run Code Online (Sandbox Code Playgroud)
要了解可用信息,请查看Index对象如何在内部存储:
print(df.index)
MultiIndex(levels=[['A', 'B', 'C', 'D', 'E'], ['W', 'X', 'Y']],
labels=[[0, 1, 2, 3, 4], [0, 1, 2, 1, 2]],
names=[0, 1])
Run Code Online (Sandbox Code Playgroud)
但是,以下方法更直观且文档更齐全。
值得注意的一点是您不必通过values属性显式提取 NumPy 数组。您可以Index直接迭代对象。此外,Pandas 可以并鼓励方法链。
返回一个Index对象,并保留顺序。
a = df.index.get_level_values(1).drop_duplicates()
# equivalently, df.index.get_level_values(1).unique()
print(a)
Index(['W', 'X', 'Y'], dtype='object', name=1)
Run Code Online (Sandbox Code Playgroud)
返回一个set. 对 O(1) 查找很有用,但结果是无序的。
a = set(df.index.get_level_values(1))
print(a)
{'X', 'Y', 'W'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8243 次 |
| 最近记录: |