ElR*_*udi 2 python dataframe pandas
我有2个pandas DataFrame小号act和exp我想结合成一个单一的数据帧df:
import pandas as pd
from numpy.random import rand
act = pd.DataFrame(rand(3,2), columns=['a', 'b'])
exp = pd.DataFrame(rand(3,2), columns=['a', 'c'])
Run Code Online (Sandbox Code Playgroud)
act #have
a b
0 0.853910 0.405463
1 0.822641 0.255832
2 0.673718 0.313768
exp #have
a c
0 0.464781 0.325553
1 0.565531 0.269678
2 0.363693 0.775927
Run Code Online (Sandbox Code Playgroud)
Dataframedf应该包含比actand多一个列索引级别exp,并且每个都包含在自己的级别 0 标识符下,如下所示:
df #want
act exp
a b a c
0 0.853910 0.405463 0.464781 0.325553
1 0.822641 0.255832 0.565531 0.269678
2 0.673718 0.313768 0.363693 0.775927
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?
有点像mergeing 两帧:
act.merge(exp, left_index=True, right_index=True, suffixes=['_act', '_exp'])
a_act b a_exp c
0 0.853910 0.405463 0.464781 0.325553
1 0.822641 0.255832 0.565531 0.269678
2 0.673718 0.313768 0.363693 0.775927
Run Code Online (Sandbox Code Playgroud)
...但使用附加级别而不是后缀来防止名称冲突。
我试过:
#not working
pd.DataFrame({'act': act, 'exp':exp})
Run Code Online (Sandbox Code Playgroud)
我可以使用循环来df逐个系列地构建,但这似乎不对。
非常感谢。
也许你可以尝试使用concat:
pd.concat([act, exp], axis=1, keys=['act', 'exp'])
Run Code Online (Sandbox Code Playgroud)
结果:
act exp
a b a c
0 0.604027 0.933399 0.830059 0.317602
1 0.992192 0.991513 0.397223 0.904166
2 0.382579 0.981182 0.862077 0.239373
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |