如何在构造函数中设置pandas dataframe multiindex

时间:2017-11-14 13:06:27

标签: pandas dataframe indexing

准备好数据后

import pandas as pd

_indexcols = ['key1', 'key2']
_columns = ['key1', 'key2', 'data1', 'data2']

_data = []
_data.append(['k11', 'k12', 'd11', 'd12'])
_data.append(['k21', 'k22', 'd21', 'd22'])

我可以这样做

_df = pd.DataFrame(_data, columns=_columns)
_df = _df.set_index(keys=_indexcols)

但不是这个。

_df = pd.DataFrame(_data, columns=_columns, index=_indexcols)

为什么呢?

如何定义indexcols以便立即接受它们?

1 个答案:

答案 0 :(得分:0)

数据帧构造函数首先创建索引,然后分配数据。因此,您无法提前访问数据以将其分配给索引。

但是如果您正在寻找仅使用构造函数并且不想要set_index的方法,那么您可以使用numpypd.MultiIndex

temp = np.array(_data)
idx = pd.MultiIndex.from_arrays(temp[:,:2])
_df = pd.DataFrame(temp[:,2:],columns=_columns[2:],index =idx)
        data1 data2
k11 k21   d11   d12
k12 k22   d21   d22