错误:使用 .corr 时“float”对象没有属性“shape”

Mat*_*sho 2 python pandas

我想从数据框中获取两列的相关系数:df['a'] 和 df['b'] 大约有 15 或 20 行数据。

我将它们分配给“col1”和“col2”并尝试调用 corr 方法:

    col1 = df['a']
    col2 = df['b']
    corr = col1.corr(col2,method="pearson")
Run Code Online (Sandbox Code Playgroud)

我收到错误:“float”对象没有属性“shape”

如果我导入统计库并尝试:

 corr, pval=stats.pearsonr(col1,col2)
Run Code Online (Sandbox Code Playgroud)

我得到一个相关系数。那么我在第一件事上做错了什么?

在回答其中一条评论时,我检查了 col1 和 col2 的类型,它们都是系列。我认为这会起作用,因为我转到了文档中的此链接: https: //pandas.pydata.org/docs/reference/api/pandas.Series.corr.html 这没有表明您需要指定这是一个系列而不是数据框。

我还检查了完整数据框的类型:

print(type(df))
Run Code Online (Sandbox Code Playgroud)

它以 dataframe 类型返回。完整的 dataframe 有 21 列,带有索引。我只想获得其中两列的相关系数。这是打印 col1 和 col2 时得到的数据子集:
col1:
Country
Indonesia 9.3659e-05
Japan 0.000388417
Canada 0.001638514
...
Name: a, dtype: object

col2:
国家
印度尼西亚 65
日本 194
加拿大 167
...
名称:b,dtype:对象

是国家/地区的索引导致了问题吗?

Cor*_*ien 5

要么df是一个系列:

>>> df
a    10.0
b    12.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)

或者数据帧的列类型错误:

>>> df
      a     b
0  10.0  20.0
1  12.0  22.0

>>> df.dtypes
a    float64
b     object
dtype: object
Run Code Online (Sandbox Code Playgroud)