考虑以下数据框
df1
和df2
:
df1:
sim_names Model 1
signal_names my_y1 my_y2
units °C kPa
(Time, s)
0.0 0.738280 1.478617
0.1 1.078653 0.486527
0.2 0.794123 0.604792
0.3 0.392690 1.072772
df2:
Empty DataFrame
Columns: []
Index: [0.0, 0.1, 0.2, 0.3]
如您所见,
df1
具有三个级别,名称为"sim_names", "signal_names" and "units"
.
接下来,我想连接两个数据帧,因此我运行以下命令:
df2 = pd.concat(
[df1, df2],
axis="columns",
)
但我得到的是以下内容:
df2:
Model 1
my_y1 my_y2
°C kPa
(Time, s)
0.0 0.738280 1.478617
0.1 1.078653 0.486527
0.2 0.794123 0.604792
0.3 0.392690 1.072772
如您所见,关卡名称不见了。
我应该怎么做才能在生成的
df1
中保留df2
的级别名称?
我想要的结果
df2
应该像下面这样:
df2:
sim_names Model 1
signal_names my_y1 my_y2
units °C kPa
(Time, s)
0.0 0.738280 1.478617
0.1 1.078653 0.486527
0.2 0.794123 0.604792
0.3 0.392690 1.072772
我试图将
names=["sim_names", "signal_names", "units"]
作为参数传递给 pd.concat
但我得到了与上面相同的错误结果。
我不确定,但似乎这是正常行为(参见 GH13475)。
rename_axis
/names
:
out = pd.concat(
[df1, df2],
axis="columns",
).rename_axis(df1.columns.names, axis=1) # <- added chain
输出:
print(out)
sim_names Model 1
signal_names my_y1 my_y2
units °C kPa
(Time, s)
0.00 0.74 1.48
0.10 1.08 0.49
0.20 0.79 0.60
0.30 0.39 1.07