一、创建联合索引
步骤详解
- 读取 CSV 文件:首先读取 CSV 文件,并将第一列设置为行索引。
- 提取列索引:提取 DataFrame 的列索引。
- 创建多级索引:使用
pd.MultiIndex.from_product
创建多级索引。 - 重塑 DataFrame:将 DataFrame 的值转换为一维数组,并使用
pd.Series
和unstack
方法重新构建 DataFrame。
示例代码
假设数据存储在一个 CSV 文件中,文件名为 table.csv
:
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('table.csv', index_col=0)
# 提取列索引
column_index = df.columns
# 提取行索引
row_index = df.index
# 创建多级索引
multi_index = pd.MultiIndex.from_product([row_index, column_index], names=['Row', 'Column'])
# 重塑 DataFrame
df_values = df.values.flatten() # 将 DataFrame 转换为一维数组
df_series = pd.Series(df_values, index=multi_index)
# 重新构建 DataFrame
df_final = df_series.unstack(level=-1)
# 显示 DataFrame
print(df_final)
二、读取特定单元格的数据
可以使用 .loc
或 .iloc
方法来访问特定单元格的数据。
使用 .loc
方法
.loc
方法基于标签进行索引,适用于带有明确标签的 DataFrame。
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('table.csv', index_col=0)
# 使用 .loc 方法读取 B 列和 3 行的数据
value = df.loc[3, 'B']
print(value) # 输出应该是 17
使用 .iloc
方法
.iloc
方法基于位置进行索引,适用于基于位置的索引。
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('table.csv', index_col=0)
# 使用 .iloc 方法读取 B 列和 3 行的数据
# 注意:iloc 是基于 0 索引的,所以第三行是 2,第二列是 1
value = df.iloc[2, 1]
print(value) # 输出应该是 17