我正在沿着轴= 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
您知道如何将密钥添加到数据框吗?
答案 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