我有一个像下面这样的熊猫数据框。我想建立一个相关矩阵,以建立一系列客户记录的产品所有权与利润/成本/收益之间的关系。
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之间的相关性。
问题:如何为每个轴选择特定的列?谢谢!
答案 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']]