从Pandas df中选择相关的列/轴

时间:2019-05-06 18:18:31

标签: python-3.x pandas correlation

我有一个像下面这样的熊猫数据框。我想建立一个相关矩阵,以建立一系列客户记录的产品所有权与利润/成本/收益之间的关系。

    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_own,而沿另一个轴具有利润/成本/收益。我想避免在相关矩阵中包含prod_owned_a和prod_owned_b之间的相关性。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

不是非常优化,但仍然如此;

df.corr().loc[['prod_owned_a', 'prod_owned_b'], ['profit', 'cost', 'rev']]