【问题标题】:pandas python: np.array_split(df, x) throws an error: 'DataFrame' object has no attribute 'size'pandas python:np.array_split(df,x)抛出错误:'DataFrame'对象没有属性'size'
【发布时间】:2014-11-06 16:33:45
【问题描述】:

当我使用下面的代码时

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10,1))  
df = np.array_split(df, 4)

仅供参考 - df 这里是一个

<class 'pandas.core.frame.DataFrame'>

那么为什么会出现以下错误:

AttributeError: 'DataFrame' object has no attribute 'size'

我在 windows 7 上使用最新的 pandas 版本 0.15,带有 anaconda 和 eclipse。

谢谢

【问题讨论】:

    标签: python numpy pandas split dataframe


    【解决方案1】:

    尝试改用np.array_split(df[0], 4)

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(np.random.randn(10,1))
    df = np.array_split(df[0], 4)
    print df
    

    结果:

    [0    1.210245
    1    0.311729
    2    0.044975
    Name: 0, dtype: float64, 
    3   -1.202211
    4    0.579064
    5   -1.615657
    Name: 0, dtype: float64, 
    6    1.491537
    7    0.498112
    Name: 0, dtype: float64, 
    8    1.372771
    9    0.147200
    Name: 0, dtype: float64]
    [Finished in 0.5s]
    

    【讨论】:

    • 谢谢,这行得通。但我想说的是 df = np.array_split(df[0:-1], 4)。我该怎么做?
    • 似乎 np.array_split 需要一个系列,所以像 df = np.array_split(df[0:-1][0], 4) 这样的东西应该可以工作
    【解决方案2】:

    你可以像这样定义一个函数:

    def split_dataframe(df, n):
        """
        Helper function that splits a DataFrame to a list of DataFrames of size n
    
        :param df: pd.DataFrame
        :param n: int
        :return: list of pd.DataFrame
        """
        n = int(n)
        df_size = len(df)
        batches = range(0, (df_size/n + 1) * n, n)
        return [df.iloc[i:i+n] for i in batches if i!=df_size] 
    

    这将给出以下结果:

    df = pd.DataFrame(np.random.randn(10,1))  
    dfs = split_dataframe(df, 4)
    print "Num of DataFrames=%d, each of size %s" % (len(dfs), [len(i) for i in dfs])
    >>>> Num of DataFrames=3, each of size [4, 4, 2]
    

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 2019-08-14
      • 2023-02-13
      • 1970-01-01
      • 2019-12-03
      • 2022-07-22
      • 2014-01-10
      • 2019-01-15
      相关资源
      最近更新 更多