将Pandas多指数变成列可以使用reset_index()
函数。reset_index()
函数的作用是将数据框的行索引恢复为默认的整数索引,并将之前的行索引变成数据框的一列或多列。
下面是将多级行索引的数据框变成单级索引的数据框的代码示例:
import pandas as pd
# 创建一个多级行索引的数据框
data = {'A': [1, 1, 2, 2], 'B': ['a', 'b', 'a', 'b'], 'C': [1, 2, 3, 4]}
df = pd.DataFrame(data).set_index(['A', 'B'])
# 查看原始的数据框
print(df)
# 使用reset_index()函数将多级行索引变成单级索引
df2 = df.reset_index()
# 查看转换后的数据框
print(df2)
输出结果:
C
A B
1 a 1
b 2
2 a 3
b 4
A B C
0 1 a 1
1 1 b 2
2 2 a 3
3 2 b 4
在上面的示例中,我们首先创建了一个多级行索引的数据框df
,然后使用reset_index()
函数将其变成单级索引的数据框df2
。可以发现,转换后的数据框中,原来的多级行索引变成了两列(列名为A
和B
)。此外,在数据框中,C
列保持不变。
如果需要将多级列索引变成单级索引,只需要给reset_index()
函数传入axis=1
参数即可:
import pandas as pd
# 创建一个多级列索引的数据框
data = {'A': [1, 1, 2, 2], 'B': ['a', 'b', 'a', 'b'], 'C': [1, 2, 3, 4]}
df = pd.DataFrame(data).set_index(['A', 'B'])
df.columns = pd.MultiIndex.from_product([['foo', 'bar'], ['one', 'two']])
# 查看原始的数据框
print(df)
# 使用reset_index()函数将多级列索引变成单级索引
df2 = df.reset_index(level=[0, 1], col_level=1)
# 查看转换后的数据框
print(df2)
输出结果:
foo bar
one two one two
A B
1 a 1 1 2 2
b 2 2 3 3
2 a 3 3 4 4
b 4 4 5 5
A B foo bar
0 1 a 1 2
1 1 b 2 3
2 2 a 3 4
3 2 b 4 5
在上面的示例中,我们首先创建了一个多级列索引的数据框df
,采用pd.MultiIndex.from_product()
函数创建了多级列索引。然后,我们使用reset_index()
函数将对应的多级列索引变成单级索引,并将level
参数指定为[0, 1]
表示我们想要将前两级列索引变成行,col_level
参数指定为1
表示我们想要将第一层列索引作为一列数据框的列名。最终得到的数据框是单级索引的,前两列分别是原来的多级列索引的第一层和第二层,后两列是相应的数据值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:将Pandas多指数变成列 - Python技术站