IIUC,听起来你想取行索引的名称,并将其作为列索引的最后一级的名称插入。
需要注意的是,这些类型的修改只能在的尾部完成
你的分析-特别是如果你打算不在
pandas
因为你需要撤销这里介绍的一些扭曲动作。
import pandas as pd, numpy as np
data = [['', 'CCC', 'CCC', 'AAA', 'BBB' ],
['date', 'field1', 'file2', 'field1','field1'],
['01/01/2024', 100, 102, 103, 104 ],
['01/02/2024', 200, 202, 203, 204 ],
['01/03/2024', 300, 302, 303, 304 ]]
df = pd.DataFrame(data)
idx = pd.MultiIndex.from_arrays(df.iloc[:2,1:].values, names=['symbol', None])
df = df.iloc[2:,1:].set_axis(df.iloc[2:,0].rename('date'))
df = df.set_axis(idx, axis=1)
print(df)
# symbol CCC AAA BBB
# field1 file2 field1 field1
# date
# 01/01/2024 100 102 103 104
# 01/02/2024 200 202 203 204
# 01/03/2024 300 302 303 304
res1 = (
df.rename_axis([df.columns.names[0], df.index.name], axis=1)
.rename_axis(None, axis=0)
)
print(res1)
# symbol CCC AAA BBB
# date field1 file2 field1 field1
# 01/01/2024 100 102 103 104
# 01/02/2024 200 202 203 204
# 01/03/2024 300 302 303 304
## alternativelyâ¦
new_cols = pd.MultiIndex.from_tuples([(df.columns.names[0], df.index.name), *df.columns])
res2 = df.reset_index().set_axis(new_cols, axis=1)
print(res2)
# symbol CCC AAA BBB
# date field1 file2 field1 field1
# 0 01/01/2024 100 102 103 104
# 1 01/02/2024 200 202 203 204
# 2 01/03/2024 300 302 303 304