如何将 Pandas DataFrame 的索引转换为列
DataFrame 的索引转换为列
创建时间: March-28, 2020 | 更新时间: June-25, 2020
我们将介绍将 Pandas DataFrame
的索引转换为列的各种方法,例如 df.index
,带有 rename_axis
的 reset_index
来重命名索引,以及 set_index
。
我们还将介绍如何将多索引应用于具有多层索引的给定 DataFrame
。
df.index 将索引添加为新列
将索引添加为列的最简单方法是将 df.index
作为新列添加到 Dataframe
。
考虑以下代码:
# python 3.ximport pandas as pddf = pd.DataFrame([ (1,2,None), (None,4,None), (5,None,7), (5,None,None) ],columns=['a','b','d'])df['index'] = df.indexprint(df)
输出:
a b d index10 1.0 2.0 NaN 01 NaN 4.0 NaN 12 5.0 NaN 7.0 23 5.0 NaN NaN 3
使用带有 rename axis 的 reset_index 重命名当前索引列名
我们可以更改索引的名称,然后将 reset_index
更改为一系列:
# python 3.ximport pandas as pddf = pd.DataFrame([ (1,2,None), (None,4,None), (5,None,7), (5,None,None)], columns=['a','b','d'])df = df.rename_axis('index').reset_index()print(df)
输出:
index a b d0 0 1.0 2.0 NaN1 1 NaN 4.0 NaN2 2 5.0 NaN 7.03 3 5.0 NaN NaN
set_index 方法将列转换为索引
我们可以使用 set_index
方法将任何列转换为 index:
# python 3.ximport pandas as pddf = pd.DataFrame([ (1,2,None), (None,4,None), (5,4,7), (5,5,None)], columns=['a','b','d'])df.set_index('b',inplace=True)print(df)
输出:
a db 2 1.0 NaN4 NaN NaN4 5.0 7.05 5.0 NaN
或者,如果我们要删除索引名,如原始文件中那样,则可以执行 df.index.name = None
:
# python 3.ximport pandas as pddf = pd.DataFrame([ (1,2,None), (None,4,None), (5,4,7), (5,5,None) ],columns=['a','b','d'])df.set_index('b',inplace=True)df.index.name = Noneprint(df)
输出:
a d2 1.0 NaN4 NaN NaN4 5.0 7.05 5.0 NaN
MultiIndex 可在 column 上设置 indexs 的多层索引
我们可以使用 MultiIndex.from_product()
函数创建一个 MultiIndex
,如下所示:
# python 3.ximport pandas as pdimport numpy as npindex = pd.MultiIndex.from_product([ ['Burger', 'Steak', 'Sandwich'], ['Half', 'Full']], names=['Item', 'Type'])df = pd.DataFrame(index=index, data=np.random.randint (0, 10, (6,4)), columns=list('abcd'))print(df)
输出:
a b c dItem Type Burger Half 0 3 9 1 Full 2 2 0 5Steak Half 8 4 5 5 Full 5 8 0 7Sandwich Half 2 8 9 5 Full 4 4 5 9
赞 (0)