如何在 pandas 中创建多级数据框?
How to create a multilevel dataframe in pandas?
给定两个不同的 df:
'A'
a b
2016-11-21 2 1
2016-11-22 3 4
2016-11-23 5 2
2016-11-24 6 3
2016-11-25 6 3
'B'
a b
2016-11-21 3 0
2016-11-22 1 0
2016-11-23 1 6
2016-11-24 1 5
2016-11-25 0 2
如何创建这种形状的 'multilevel' 数据框:
'C'
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
*index 是一个 'datatime' 对象
谢谢
一种选择是使用 MultiIndex()
构造 A
和 B
的列级别,然后连接它们:
import pandas as pd
A.columns = pd.MultiIndex.from_product([['A'], A.columns])
B.columns = pd.MultiIndex.from_product([['B'], B.columns])
pd.concat([A, B], axis = 1)
# A B
# a b a b
#2016-11-21 2 1 3 0
#2016-11-22 3 4 1 0
#2016-11-23 5 2 1 6
#2016-11-24 6 3 1 5
#2016-11-25 6 3 0 2
您可以使用 concat
和参数 keys
:
df = pd.concat([A, B], axis = 1, keys=(list('AB')))
print (df)
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
给定两个不同的 df:
'A'
a b
2016-11-21 2 1
2016-11-22 3 4
2016-11-23 5 2
2016-11-24 6 3
2016-11-25 6 3
'B'
a b
2016-11-21 3 0
2016-11-22 1 0
2016-11-23 1 6
2016-11-24 1 5
2016-11-25 0 2
如何创建这种形状的 'multilevel' 数据框:
'C'
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
*index 是一个 'datatime' 对象
谢谢
一种选择是使用 MultiIndex()
构造 A
和 B
的列级别,然后连接它们:
import pandas as pd
A.columns = pd.MultiIndex.from_product([['A'], A.columns])
B.columns = pd.MultiIndex.from_product([['B'], B.columns])
pd.concat([A, B], axis = 1)
# A B
# a b a b
#2016-11-21 2 1 3 0
#2016-11-22 3 4 1 0
#2016-11-23 5 2 1 6
#2016-11-24 6 3 1 5
#2016-11-25 6 3 0 2
您可以使用 concat
和参数 keys
:
df = pd.concat([A, B], axis = 1, keys=(list('AB')))
print (df)
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2