Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 构建将数据帧划分为组的函数_Python_Pandas_Dataframe - Fatal编程技术网

Python 构建将数据帧划分为组的函数

Python 构建将数据帧划分为组的函数,python,pandas,dataframe,Python,Pandas,Dataframe,我对创建一个函数感兴趣,该函数可以执行以下操作: 接受两个参数:数据帧和整数 在DF中添加一个名为“组”的列 根据其整数位置为每行指定一个整数。组数应为给定给函数的整数数 如果行数不能除以给定的整数,则应在组之间尽可能均匀地分割剩余行。这是我遇到问题的部分 以下是我为阐明我的意图而做的一个示例: 我想从这个DF中得到: d = {'value': [1,2,3,4,5,6,7,8,9,10,11,12,13],} df_init = pd.DataFrame(data=d) 通过此功能: wa

我对创建一个函数感兴趣,该函数可以执行以下操作:

  • 接受两个参数:数据帧和整数
  • 在DF中添加一个名为“组”的列
  • 根据其整数位置为每行指定一个整数。组数应为给定给函数的整数数
  • 如果行数不能除以给定的整数,则应在组之间尽可能均匀地分割剩余行。这是我遇到问题的部分 以下是我为阐明我的意图而做的一个示例:

    我想从这个DF中得到:

    d = {'value': [1,2,3,4,5,6,7,8,9,10,11,12,13],}
    df_init = pd.DataFrame(data=d)
    
    通过此功能:

    wanted function(df_init,5)
    
    对于此finel DF:

    s = {'value': [1,2,3,4,5,6,7,8,9,10,11,12,13],'group':[1,1,1,2,2,2,3,3,3,4,4,5,5]}
    df_finel = pd.DataFrame(data=d)
    

    如果我能更清楚地回答这个问题,请告诉我怎么做,我会解决它。

    使用
    np.array\u split

    In [5481]: [i for i, x in enumerate(np.array_split(np.arange(len(df)), 5), 1) for _ in x]
    Out[5481]: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5]
    
    分配

    In [5487]: df['group'] = [i for i, x in 
                              enumerate(np.array_split(np.arange(len(df)), 5), 1) for _ in x]
    
    In [5488]: df
    Out[5488]:
        value  group
    0       1      1
    1       2      1
    2       3      1
    3       4      2
    4       5      2
    5       6      2
    6       7      3
    7       8      3
    8       9      3
    9      10      4
    10     11      4
    11     12      5
    12     13      5
    

    细节

    原始df

    行为

    In [5492]: np.array_split(np.arange(len(df)), 5)
    Out[5492]:
    [array([0, 1, 2]),
     array([3, 4, 5]),
     array([6, 7, 8]),
     array([ 9, 10]),
     array([11, 12])]
    

    如果您在函数中编写相同的代码,那么这个解决方案会很好。
    In [5492]: np.array_split(np.arange(len(df)), 5)
    Out[5492]:
    [array([0, 1, 2]),
     array([3, 4, 5]),
     array([6, 7, 8]),
     array([ 9, 10]),
     array([11, 12])]