将功能应用于python中的两个熊猫数据帧(两个数据帧中的每一行的scipy.stats.spearmanr)

时间:2018-07-23 00:08:23

标签: pandas dataframe apply

我有两个熊猫数据框:价格和销售数据框。

价格数据框记录了每年(索引)中每种产品(列)的价格

    |a  |b  |c  |d  |e  |
2018|3.2|4.5|5.6|7.8|8.1|
2017|6.2|1.5|2.6|7.8|2.1|
2016|2.2|9.5|0.6|6.8|4.1|
2015|2.2|6.5|7.6|7.8|2.1|

sales数据框(如下所示)记录了每年(索引)中每种产品(列)的销售额

    |a  |b  |c  |d  |e  |
2018|101|405|526|108|801|
2017|601|105|726|308|201|
2016|202|965|856|408|411|
2015|322|615|167|458|211|

我想计算每年价格和销售额之间的Spearman相关性。我知道scipy.stats.spearmanr函数可以完成类似的工作,但是我需要对两个数据帧中的每一行都应用scipy.stats.spearmanr功能。

例如,对于2018年,我需要计算之间的Spearman相关性

    |a  |b  |c  |d  |e  |
2018|3.2|4.5|5.6|7.8|8.1|

    |a  |b  |c  |d  |e  |
2018|101|405|526|108|801|

我可以知道什么是最好的吗? 结果我想要如下输出:

2018|spearman cor btw price and sales in 2018
2017|spearman cor btw price and sales in 2017
2016|spearman cor btw price and sales in 2016

1 个答案:

答案 0 :(得分:0)

猜你可以做

import scipy.stats as st

>>> pd.Series(map(lambda k: st.spearmanr(k[0], k[1])[0],
                  zip(df.values, df2.values)),    
              index=df.index)
2018    0.7
2017    0.6
2016    0.3
2015    0.2
dtype: float64