将属性“关键字”添加到串联的数据框中

时间:2018-11-29 09:36:23

标签: python-3.x pandas dataframe concatenation

我正在沿着轴= 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 add keys while concatenating dataframes at column level中的@YashTD建议打印属于某个键之一的所有列时

print(comb_data.snow.tl)

我收到以下错误消息:

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

我认为,密钥只是没有被添加到数据框中,但是我不知道为什么。它们也不会出现在打印dataframe head()的地方,应该由以下人员建议 Pandas add keys while concatenating dataframes at column level

您知道如何将密钥添加到数据框吗?

1 个答案:

答案 0 :(得分:1)

首先在列中删除ignore_index=True的参数MultiIndex,然后按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