我有以下資料集:
df = pd. DataFrame({'A'/span>: [[10, 11, 12], [13, 14, 15] ]。
'B'。[[17, 18, 12] 。[21, 22, 13]]})
df
A B
0 [10, 11, 12] [17, 18, 12]
1 [13, 14, 15] [21, 22, 13]
現在我想使用scipy.stats.pearsonr方法在A和B列的基礎上創建一個新列Correlation。我正在嘗試這樣做:
# Creating a function for correlation
def correlation(row)。
相關性,p_value = stats.pearsonr(row['A'], row['B'] )
return 相關性
# 應用函式 回傳 相關性。
df['correlation'] = df.apply(correlation, axis = 1)
df
A B 相關性
0 [10, 11, 12] [17, 18, 12] -0.777714
1 [13, 14, 15] [21, 22, 13] -0.810885
如果我有太多的列,上面的腳本就不理想了。我在想,我是否可以直接在lambda中使用stats.pearsonr來獲得相同的結果?
如果有任何建議,我們將不勝感激。謝謝!
uj5u.com熱心網友回復:
我將推薦使用zip與for回圈
df['out'/span>] = [stats. pearsonr(x, y)[0] for x, y in zip(df.A, df.B)]
df
Out[163]。
A B出局
0 [10, 11, 12] [17, 18, 12] -0.777714
1 [13, 14, 15] [21, 22, 13] -0.810885
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323997.html
標籤:
上一篇:pandasto_datetime因日期格式不正確而拋出一個值錯誤
下一篇:從一個df創建多個df
