這似乎相當明顯,但我似乎無法弄清楚如何將數據幀的索引轉換爲列?如何將數據框中的熊貓索引轉換爲列?
例如:
df=
gi ptt_loc
0 384444683 593
1 384444684 594
2 384444686 596
要,
df=
index1 gi ptt_loc
0 0 384444683 593
1 1 384444684 594
2 2 384444686 596
這似乎相當明顯,但我似乎無法弄清楚如何將數據幀的索引轉換爲列?如何將數據框中的熊貓索引轉換爲列?
例如:
df=
gi ptt_loc
0 384444683 593
1 384444684 594
2 384444686 596
要,
df=
index1 gi ptt_loc
0 0 384444683 593
1 1 384444684 594
2 2 384444686 596
或者:
df['index1'] = df.index
,或者.reset_index
:
df.reset_index(level=0, inplace=True)
所以,如果你有3級指標,如多指標框架:
>>> df
val
tick tag obs
2016-02-26 C 2 0.0139
2016-02-27 A 2 0.5577
2016-02-28 C 6 0.0303
,並要在索引中的第一個(tick
)和第三(obs
)水平轉換成列,你會怎麼做:
>>> df.reset_index(level=['tick', 'obs'])
tick obs val
tag
C 2016-02-26 2 0.0139
A 2016-02-27 2 0.5577
C 2016-02-28 6 0.0303
對於多指標,你可以使用提取其分類指數
df['si_name'] = R.index.get_level_values('si_name')
其中si_name
是子索引的名稱。
爲了更清楚一點,我們來看一下在其索引中有兩個級別的DataFrame(一個MultiIndex)。
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['North', 'South']],
names=['State', 'Direction'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))
的reset_index
方法,調用默認參數,將所有指數水平列,並使用一個簡單的RangeIndex
的新指標。
df.reset_index()
使用level
參數來控制哪些索引電平被轉換成列。如有可能,請使用更清晰的級別名稱。如果沒有關卡名稱,則可以通過其整數位置來引用每個關卡,這些位置從外部開始爲0。您可以在這裏使用標量值或者您想要重置的所有索引的列表。
df.reset_index(level='State') # same as df.reset_index(level=0)
在極少數情況下,你要保留指數,並打開索引的列,您可以執行以下操作:
# for a single level
df.assign(State=df.index.get_level_values('State'))
# for all levels
df.assign(**df.index.to_frame())
記住,你必須對你所有的索引做n次(例如,如果你有兩個索引,那麼你必須做兩次) – dval
用'df.reset_index(level = df.index.names,inplace = True)'可以將給定的整個多索引到列 – venti
你可以在列上有一個索引只是添加到數據框,所以它是一個真正的列和索引? – bretcj7