我有两个数据帧,我试图使用每个数据帧的每一行中的值来生成Pearson Correlation Coefficient。
我目前正在使用代码生成具有相关值的新数据框:
Corr_df = df_A.corrwith(df_B, axis = 1)
但是,结果Corr_df仅返回空值。当我可以使用CORREL公式在excel中生成相同的Correlation Coefficient时,为什么Python不会这样做?
df_A的链接是:https://drive.google.com/file/d/1gyBbH2MYQM_oM5wwLIkIoOrSADgooWIu/view?usp=sharing
df_B的链接是:https://drive.google.com/file/d/1lr60I-DLSaiSHVFRebXwxEH1J_ebbzoP/view?usp=sharing
请帮帮我吧!
答案 0 :(得分:1)
您需要在两个DataFrame中使用相同的列名称:
df_A = pd.read_excel('A.xlsx')
df_B = pd.read_excel('A.xlsx')
df_B.columns = df_A.columns
Corr_df = df_A.corrwith(df_B, axis = 1)
替代:
d = dict(zip(df_A.columns, df_B.columns))
Corr_df = df_A.corrwith(df_B.rename(columns=d), axis = 1)
print (Corr_df.head())
0 1.0
1 1.0
2 1.0
3 1.0
4 1.0
dtype: float64
答案 1 :(得分:0)
corrwith仅适用于相同的列名...否则它将不起作用... pd.corrwith on pandas dataframes with different column names此链接会有所帮助