我有一个pandas数据帧,其列ID
如下。
ID
1
1
1
20
20
30
50
50
51
60
60
300
300
302
302
500
有没有任何自动有效的方法可以将其拆分为n
,比如说n=4
块,这样
chunk-1:
ID
1
1
1
20
20
chunk-2:
ID
30
50
50
51
chunk-3:
ID
60
60
300
300
chunk-4:
ID
302
302
500
需要注意的是,
- 每个区块的大小可能不相同
- 任何组块之间都没有共同的值
我尝试了简单的df_split = np.array_split(df, 4)
,但它不满足上述两个条件中的条件2
使用groupby
拆分数据。
import pandas as pd
df = pd.DataFrame({'id': [1,1,1,20,20,30,40,40,51,60,60,300,300,302,302,500]})
df_grouped = [subgroup for _, subgroup in df.groupby('id')]
如果你想把这个结果分成四组,
df_grouped_new = [df_grouped[0], df_grouped[1], df_grouped[2], pd.concat(df_grouped[3:])]
然后
print(df_grouped_new[0])
>>>
id
0 1
1 1
2 1
print(df_grouped_new[1])
>>>
id
3 20
4 20
print(df_grouped_new[2])
>>>
id
5 30
print(df_grouped_new[3])
>>>
id
6 40
7 40
8 51
9 60
10 60
11 300
12 300
13 302
14 302
15 500