【问题标题】:Correlation of every pandas row with another pandas dataframe as a new column每个 pandas 行与另一个 pandas 数据框作为新列的相关性
【发布时间】:2022-07-27 00:11:28
【问题描述】:

假设我有以下df

Company   Apples   Mangoes   Oranges

Amazon       0.75      0.6     0.98
BellTM       0.23      0.75    0.14
Cadbury      0.4       0.44    0.86

然后是另一个名为vendor的数据框:

Company   Apples   Mangoes   Oranges

Deere       0.11      0.3     0.79

我想在vendor 数据框中找到每家公司与公司Deere 的逐行相关性。我希望将输出的相关系数作为名为 Correlationcoef 的列添加到原始数据框 df:

Company   Apples   Mangoes   Oranges     Corrcoef

Amazon       0.75      0.6     0.98     0.77955981 
BellTM       0.23      0.75    0.14    -0.37694478
Cadbury      0.4       0.44    0.86     0.98092707

当我尝试以下操作时:

df.iloc[:,1:].corrwith(vendor.iloc[:,1:], axis=1)

我得到一个包含 NaN 值的列表。 我通过将每一行保存为数组并使用 np.corrcoef(x1,y)

手动获取了 Corrcoef 值

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用:

    df.set_index('Company').corrwith(vendor.set_index('Company').loc['Deere'], axis=1)
    

    输出:

    Company
    Amazon     0.779560
    BellTM    -0.376945
    Cadbury    0.980927
    dtype: float64
    

    【讨论】:

      【解决方案2】:

      我认为您可能想首先创建tidy data。您正在寻找的数据框将是:Company NameFruitTableNameValue。您可以通过使用 pandas 中的 melt 方法来完成此操作。然后,您可以将各个表连接在一起,并使用groupby 计算FruitCompany 的相关性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-13
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        • 2019-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        相关资源
        最近更新 更多