向串联数据框添加属性"keys"



我将沿着轴=1(列(连接两个数据帧,并尝试使用"键"以便稍后能够区分具有相同名称的两个数据框架的列。

df1 = pd.DataFrame({'tl': ['x1', 'x2', 'x3', 'x4'],
'ff': ['y1', 'y2', 'y3', 'y4'],
'dd': ['z1', 'z2', 'z3', 'z4']},
index=[2016-01-01, 2016-01-02, 2016-01-03, 2016-01-04])
df2 = pd.DataFrame({'tl': ['x1', 'x2', 'x3', 'x4'],
'ff': ['y1', 'y2', 'y3', 'y4'],
'rf': ['z1', 'z2', 'z3', 'z4']},
index=[2016-01-01, 2016-01-02, 2016-01-03, 2016-01-04])
data = pd.concat([df1, df2],keys=['snow','wind'], axis=1, ignore_index=True)

然而,当试图打印Pandas中@YashTD建议的属于其中一个键的所有列时,添加键,同时在列级连接数据帧

print(comb_data.snow.tl)

我收到以下错误消息:

AttributeError: 'DataFrame' object has no attribute 'snow'

我想,密钥只是没有被添加到数据帧中,但我不知道为什么。他们也没有出现在打印数据帧头((时,应该由Pandas在列级连接数据帧时添加密钥

你知道如何将密钥添加到数据帧中吗?

首先删除列中MultiIndex的参数ignore_index=True,然后通过tuple:进行选择

data = pd.concat([df1, df2],keys=['snow','wind'], axis=1)
print (data)
snow         wind        
tl  ff  dd   tl  ff  rf
2016-01-01   x1  y1  z1   x1  y1  z1
2016-01-02   x2  y2  z2   x2  y2  z2
2016-01-03   x3  y3  z3   x3  y3  z3
2016-01-04   x4  y4  z4   x4  y4  z4
print (data[('snow','tl')])
2016-01-01    x1
2016-01-02    x2
2016-01-03    x3
2016-01-04    x4
Name: (snow, tl), dtype: object

最新更新