【发布时间】:2019-02-08 00:56:19
【问题描述】:
我正在尝试操作一堆多索引 Pandas 数组。每列都是具有不同分类分组的时间序列。我想对数据进行排序,然后解析所有类别,然后进行一些额外的数据操作。这是我尝试但没有工作的示例代码
import pandas as pd
import numpy as np
df=pd.DataFrame({'t': range(1,11)})
df.set_index(['t'],inplace=True)
for num in range(2):
labely = (str(num),'A','y')
labelx = (str(num),'A','x')
labelbx = (str(num),'B','x')
df[labelx]= np.random.randn(10)
df[labelbx]= np.random.randn(10)
df[labely]= np.random.randn(10)+range(1,11)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['ID','Location','Direction'])
df[('0','A','tot')]=df[('0','A','y')]+df[('0','A','x')]
df.sort_index(level='ID',inplace=True)
df.head()
这没有排序。这是总数未与其他 0 ID 分组且位置未分组在一起的结果:
ID 0 ... 1 0
Location A B A ... B A A
Direction x x y ... x y tot
t ...
1 0.430386 -0.121109 0.263314 ... 0.243839 0.313505 0.693700
2 -1.262746 -0.678889 1.289814 ... -0.893230 0.373103 0.027068
3 0.245483 -0.565859 3.766628 ... 0.012933 1.652484 4.012111
4 1.518357 0.447032 5.649877 ... -1.205161 5.513507 7.168233
5 -0.095216 -0.571333 6.794958 ... -0.777933 4.073334 6.699741
我有 2 个与此相关的问题。
- 如何对列进行排序,以便按每个 等级
- 如何有效地解析通过数据框来做 额外的数据操作。
这是第二个问题的一些 sudo 代码
for id in ID:
for loc in Location:
df[(id,loc,'tot')=df[(id,loc,'x')]+df[(id,loc,'y')]
【问题讨论】:
-
sort_index有一个参数axis默认为0,表示按索引排序。您需要axis=1才能按列排序。 -
谢谢。这完美无缺。这解决了问题 #1。仍然不确定如何解析数据框。
标签: python pandas sorting multi-index