0
這是我如何創建我的多列的表格:設置多列作爲指數與指數名稱問題
whatFields = ['mean', 'mom_2', 'n']
groupbyFields = ['foo', 'bar']
topFields = ['desc']*len(groupbyFields)
topFields += ['price']*len(whatFields)
topFields += ['units']*len(whatFields)
bottomFields = groupbyFields + whatFields + whatFields
resultsDf = pd.DataFrame(columns=pd.MultiIndex.from_arrays([topFields, bottomFields]))
indexFields = [('desc', field) for field in groupbyFields]
resultsDf.set_index(indexFields, inplace=True)
下面是空的結果:
Empty DataFrame
Columns: [(price, mean), (price, mom_2), (price, n), (units, mean), (units, mom_2), (units, n)]
Index: []
>>> resultsDf.index
Out[2]:
MultiIndex(levels=[[], []],
labels=[[], []],
names=[('desc', 'foo'), ('desc', 'bar')])
然而,填補了之後,它看起來像這個:
price units
mean mom_2 n mean mom_2 n
(desc, foo) (desc, bar)
1500002071 4292 NaN NaN NaN NaN NaN NaN
4246 NaN NaN NaN NaN NaN NaN
342 NaN NaN NaN NaN NaN NaN
104 NaN NaN NaN NaN NaN NaN
4218 2.59 0 1 NaN NaN NaN
問題是索引字段有元組形式的這些奇怪的名字,而列有「正確的」名稱現在處於多列形狀。
您可能認爲這是因爲它們是索引。編號:
(desc, foo) (desc, bar) price units
mean mom_2 n mean mom_2 n
0 1500002071 4292 NaN NaN NaN NaN NaN NaN
1 1500002071 4246 NaN NaN NaN NaN NaN NaN
2 1500002071 342 NaN NaN NaN NaN NaN NaN
3 1500002071 104 NaN NaN NaN NaN NaN NaN
4 1500002071 4218 2.59 0 1 NaN NaN NaN
爲什麼索引不遵循多佈局方面的列?最後,我想通過foo
和bar
(或真正的多索引,至少不是這個僞元組)訪問索引。
我怎麼能做到這一點?有沒有更好的方式來生成我的空df開始?