Python长度不匹配

2024-03-28 22:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习python,并试图将某个人在Kaggle上发布的笔记本改编为我当前的项目。不幸的是,我一直得到一个“长度不匹配:预期轴有33个元素,新值有9个元素”错误

import pandas as pd
import numpy as np
pd.set_option('display.float_format', lambda x: '{:.3f}'.format(x))
data = pd.read_csv('c:\python\Rent Increase History.csv')


def stats(df, pred=None):
    obs = df.shape[0]
    types = df.dtypes
    counts = df.apply(lambda x: x.count())
    uniques = df.apply(lambda x: [x.unique()])
    nulls = df.apply(lambda x: x.isnull().sum())
    distinct = df.apply(lambda x: x.unique().shape[0])
    ratio_missing = (df.isnull().sum() / obs) * 100
    skewness = df.skew()
    kurtosis = df.kurt()
    print('Data shape:', df.shape)

    if pred is None:
        cols = ['types', 'counts', 'distinct', 'nulls', 'ratio_missing', 'uniques', 'skewness', 'kurtosis']
        str = pd.concat([types, counts, distinct, nulls, ratio_missing, uniques, skewness, kurtosis], axis=1)

    else:
        corr = df.corr()[pred]
        str = pd.concat([types, counts, distinct, nulls, ratio_missing, uniques, skewness, kurtosis, corr], axis=1,
                        sort=False)
        corr_col = 'corr ' + pred
        cols = ['types', 'counts', 'distinct', 'nulls', 'ratio_missing', 'uniques', 'skewness', 'kurtosis', corr_col]

    str.columns = cols
    dtypes = str.types.value_counts()
    print('___________________________\nData types:\n', str.types.value_counts())
    print('___________________________')
    return str


StatDetails = stats(data, 'MovedOutInPeriod')
Print(StatDetails.sort_values(by='corr MovedOutInPeriod', ascending=False))

据我所知,这个函数应该返回9列,而不是我最初设计的33列。。。为什么我仍然会犯这个错误

提前谢谢。我相信这是我错过的简单的东西

更新-以下是错误的完整列表:

Traceback (most recent call last):
  File "C:\Users\john\PycharmProjects\pythonProject\main.py", line 37, in <module>
    StatDetails = rstr(data, 'MovedOutInPeriod')
  File "C:\Users\john\PycharmProjects\pythonProject\main.py", line 30, in rstr
    str.columns = cols
  File "C:\Users\john\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 5152, in __setattr__
    return object.__setattr__(self, name, value)
  File "pandas\_libs\properties.pyx", line 66, in pandas._libs.properties.AxisProperty.__set__
  File "C:\Users\john\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 564, in _set_axis
    self._mgr.set_axis(axis, labels)
  File "C:\Users\john\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\internals\managers.py", line 226, in set_axis
    raise ValueError(
ValueError: Length mismatch: Expected axis has 33 elements, new values have 9 elements

Tags: lambdainpandasdflinefiletypespd