python – 加入数据帧 – 一个带有多索引列,另一个没有

我正在尝试连接两个数据帧 – 一个使用multiindex列,另一个使用单个列名称.他们有类似的指数.

我收到以下警告:
“用户警告:在不同级别之间合并会产生意想不到的结果(左边3个级别,右边1个)”

例如:

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
df2 = pd.DataFrame(np.random.randn(3), index=['A', 'B', 'C'],columns=['w'])
df3 = df.join(df2)

加入这两个数据帧的最佳方法是什么?

最佳答案 这取决于你想要什么!您是否希望df2中的列与df中的第1或第2级列对齐?

您必须在df2的列中添加一个级别

与pd.concat超级cheezy

df.join(pd.concat([df2], axis=1, keys=['a']))

更好的方法

df2.columns = pd.MultiIndex.from_product([['a'], df2.columns])

df.join(df2)

《python – 加入数据帧 – 一个带有多索引列,另一个没有》

点赞