首页 > 解决方案 > 从 Pandas df 中选择相关的列/轴

问题描述

我有一个如下所示的熊猫数据框。我想建立一个相关矩阵,为一系列客户记录建立产品所有权与利润/成本/rev 之间的关系。

    prod_owned_a    prod_owned_b    profit      cost    rev
0   1               0               100         75      175
1   0               1               125         100     225
2   1               0               100         75      175
3   1               1               225         175     400
4   0               1               125         100     225

理想情况下,矩阵将所有 prod_owned 沿一个轴,利润/成本/rev 沿另一个轴。我想避免在相关矩阵中包含 prod_owned_a 和 prod_owned_b 之间的相关性。

问题:如何为每个轴选择特定列?谢谢!

标签: python-3.xpandascorrelation

解决方案


只要列的顺序不变,就可以使用切片:

df.corr().loc[:'prod_owned_b', 'profit':]
#                profit      cost       rev
#prod_owned_a  0.176090  0.111111  0.147442
#prod_owned_b  0.616316  0.666667  0.638915

更强大的解决方案定位所有“prod_*”列:

prod_cols = df.columns.str.match('prod_')
df.corr().loc[prod_cols, ~prod_cols]
#                profit      cost       rev
#prod_owned_a  0.176090  0.111111  0.147442
#prod_owned_b  0.616316  0.666667  0.638915

推荐阅读