如何为熊猫中的每一行子集运行关联?

时间:2018-09-13 22:10:57

标签: python python-3.x pandas

假设我有一个虚构的熊猫数据框df

假设它具有三列:genderheightweight

是否存在一种内置或有效的方法来获取每个height的{​​{1}}和weight的相关性?

到目前为止我所做的:

  1. 手动过滤每种性别的数据框,然后运行
    相关性。
  2. 这对我的样本集有效,但由于我的类别比gender多,因此在生产样本集中会分散。我有数百名。

我的次优代码示例:

gender

理想的输出:

df_m=df[(df['gender']=='male')]
df_m['height'].corr(df_m['weight'])
df_f=df[(df['gender']=='female')]
df_f['height'].corr(df_f['weight'])

1 个答案:

答案 0 :(得分:1)

df.groupby('gender').apply(lambda x: x.height.corr(x.weight)).rename('correlation').to_frame()

最后一部分(renameto_frame)只是为了使其达到您想要的输出。

示例

>>> df
   gender  height  weight
0    male       1       4
1    male       2       4
2    male       3       5
3  female       1       4
4  female       2       3
5  female       3       5

>>> df.groupby('gender').apply(lambda x: x.height.corr(x.weight)).rename('correlation').to_frame()
        correlation
gender             
female     0.500000
male       0.866025