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
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])]