dataframe - 从头开始设置特定的多索引
问题描述
我的任务如下:我需要从头开始以数据框的形式构建几个表。特别是,对于每个标识符,每个表总是相同的(一种汇总统计表)。例如:
result= {'Value':[mean_t,mean_t_1,mean_diff_lev, mean_diff_log],
'T-stat':[np.NaN,np.NaN,t_diff_lev, t_diff_log],
'Type':['XL','XL','XL', 'XL']}
result=pd.DataFrame.from_dict(result,orient='index',
columns=['Square_t','Square_t_1',
'Mean diff','Mean diff log'])
结果给了我这个:
Square_t Square_t_1 Mean diff Mean diff log
Value 502.123 533.324 -31.2018 -0.0567523
T-stat NaN NaN -3.33098 -5.38749
Type XL XL XL XL
我有一个函数可以计算那里使用的所有值,最后它从值字典创建上面给出的数据框。我需要能够设置一个由两个组件组成的多索引:第一个(或外部)一个是标识符(比如“Roger”),第二个(或内部)是由我已经拥有的,即 list 给出的['Value','T-Stat'.'Type']
。结果应如下所示:
Square_t Square_t_1 Mean diff Mean diff log
Roger Value 502.123 533.324 -31.2018 -0.0567523
T-stat NaN NaN -3.33098 -5.38749
Type XL XL XL XL
或这个:
ID Var Square_t Square_t_1 Mean diff Mean diff log
Roger Value 502.123 533.324 -31.2018 -0.0567523
T-stat NaN NaN -3.33098 -5.38749
Type XL XL XL XL
然后,目标是能够通过附加或连接具有不同 ID 的不同数据帧来构建更大的数据帧。
解决方案
我自己找到了答案。最简单的方法是使用 pandas 方法concat
。与其为每个 ID 创建一个具有多索引的数据帧,不如为每个 ID 创建一个没有 ID 的数据帧,创建所有数据帧,并且在跟踪列表中的各种 ID 之后,我们可以简单地连接所有单个 ID数据框。让我们说我们有两个数据框df1,df2
类型:
Square_t Square_t_1 Mean diff Mean diff log
Value 502.123 533.324 -31.2018 -0.0567523
T-stat NaN NaN -3.33098 -5.38749
Type XL XL XL XL
对于 ID ['Roger','Kyle']
。我们运行:
pd.concat([df1,df2],keys=['Roger','Kyle'])
结果将确实是一个多索引数据框:
Square_t Square_t_1 Mean diff Mean diff log
Roger Value 430.855 454.733 -23.8778 -0.0492182
T-stat NaN NaN -3.48394 -5.37168
Type XL XL XL XL
Kyle Value 721.824 735.67 -13.846 -0.0192327
T-stat NaN NaN -1.93132 -2.74519
Type XL XL XL XL
pd.concat([df1,df2],keys=['Roger','Kyle']),index
MultiIndex([('Roger', 'Value'),
('Roger', 'T-stat'),
('Roger', 'Type'),
( 'Kyle', 'Value'),
( 'Kyle', 'T-stat'),
( 'Kyle', 'Type')],
)
推荐阅读
- hyperledger-fabric - Hyperledger Fabric 中有哪些不同的角色?
- xml - 复杂表达式中的大写 [XSLT 1.0]
- android - Void 的 rxjava2 问题
- c - 一段时间后,Sendto 失败并出现错误“没有这样的设备或地址”
- angular - 如何将 Angular Material 表列标题及其 mat-cell 内容居中
- groovy - 单个语音标记未添加到数字中
- javascript - 服务内的空属性
- reactjs - 如何测试将使用钩子更改状态值的“onChange”函数
- c# - 直接使用数据源时在DataGridView中显示外键表数据的值
- angular - ng-Option 多 [值]