我正在尝试连接两个数据帧 – 一个使用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)