df1 = DataFrame(np.arange(6).reshape(3, 2), index=['a', 'b', 'c'],
columns=['one', 'two'])
df2 = DataFrame(5 + np.arange(4).reshape(2, 2), index=['a', 'c'],
columns=['three', 'four'])
>>> df1
one two
a 0 1
b 2 3
c 4 5
>>> df2
three four
a 5 6
c 7 8
res = pd.concat([df1, df2], axis=1, levels=['level1', 'level2'],
names=['upper', 'lower'])
>>> res
one two three four
a 0 1 5 6
b 2 3 NaN NaN
c 4 5 7 8
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么上面的res输出中没有显示级别和名称?任何实际示例如何使用关卡选项?
感谢您的时间和帮助
真的很有趣的问题。
我在SO 中进行研究,但从未使用过:(
但在文档中是一个带有通知的示例:
是的,这是相当深奥的,但实际上对于实现诸如
GroupBy分类变量的顺序有意义的事情是必要的。
也docs说:
levels : 序列列表,默认无。用于构建 MultiIndex 的特定级别(唯一值)。否则,它们将从密钥中推断出来。
因此,它将新级别添加到MultiIndex:
res = pd.concat([df1, df2], axis=1,
keys=['level1','level2'],
levels=[['level1', 'level2','level3']],
names=['upper', 'lower'])
print (res)
upper level1 level2
lower one two three four
a 0 1 5.0 6.0
b 2 3 NaN NaN
c 4 5 7.0 8.0
print (res.columns)
MultiIndex(levels=[['level1', 'level2', 'level3'], ['four', 'one', 'three', 'two']],
labels=[[0, 0, 1, 1], [1, 3, 2, 0]],
names=['upper', 'lower'])
Run Code Online (Sandbox Code Playgroud)
无参数相同levels:
res = pd.concat([df1, df2], axis=1,
keys=['level1','level2'],
names=['upper', 'lower'])
print (res)
upper level1 level2
lower one two three four
a 0 1 5.0 6.0
b 2 3 NaN NaN
c 4 5 7.0 8.0
print (res.columns)
MultiIndex(levels=[['level1', 'level2'], ['four', 'one', 'three', 'two']],
labels=[[0, 0, 1, 1], [1, 3, 2, 0]],
names=['upper', 'lower'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |