提问人:nath183 提问时间:10/13/2023 最后编辑:nath183 更新时间:10/13/2023 访问量:56
将列标签与 Pandas MultiIndex 合并
Merge column labels with Pandas MultiIndex
问:
我正在尝试处理从 Excel 电子表格导入的 pandas 数据帧中的数据。
导入数据时,我将其导入,使其具有多索引结构。
blid_df = pd.read_excel('OriginalClean.xlsx', header=[0,1,2], index_col=None)
我想按国家/地区编制索引,我可以使用set_index但是我的所有国家/地区都变成了元组,例如(澳大利亚)。
我还想让国家类型位于正确的级别,并删除这些未命名的级别标签。
答:
1赞
Timeless
10/13/2023
#1
也许我错了,但我想象/假设您正在以这种方式阅读多标题电子表格:
df = pd.read_excel("file.xlsx", header=[0, 1, 2])
您可以尝试以下方法:
df = (
pd.read_excel("file.xlsx", index_col=[0, 1], header=[0, 1, 2]) # 1st chain
.rename_axis(index=["Country", "Country Type"], columns=[None]*3)
)
df.index.nlevels # should be 2 (previously 1)
df.columns.nlevels # should be 3
如果不处理 Excel 文件,请将第一个链替换为 。df.set_index(list(df.columns[:2]))
评论
0赞
nath183
10/15/2023
非常感谢你,这给了我几个小时的问题
0赞
gl00ten
10/13/2023
#2
您可以在加载数据后重命名所有列。拥有同名的列,不会让它高兴。 试试这样的方法:
import pandas as pd
#proper non repeated column names
column_names = ["new_column_name1", "new_column_name2", "new_column_name3"]
data = pd.read_csv("your_data.csv", names=column_names, header=None)
#proper data_types
data_types = {
"new_column_name1": str, # Example: Integer data type
"new_column_name2": float, # Example: Float data type
"new_column_name3": int, # Example: Float data type
}
# Set data types
data = data.astype(data_types)
# Use the first column as the index
data = data.set_index("new_column_name1")
# Reindex the DataFrame
data = data.reindex(drop=True)
评论