我有一个大的DataFrame,我需要分成两个(A和B),并且A和B中某个列值的行数相同。该列有700多个唯一值,所有这些值都是字符串。我举个例子:
DataFrame
Price Type
1 X
2 Y
3 Y
4 X
5 X
6 X
7 Y
8 Y
(随机)拆分时,我应该在DataFrame A和DataFrame B中获得两个X值和两个Y值,例如:
A
Price Type
1 X
5 X
2 Y
3 Y
B
Price Type
4 X
6 X
7 Y
8 Y
谢谢!
答案 0 :(得分:2)
您可以使用groupby().cumcount()
枚举Type
中的行,然后使用%2
将行分为两组:
df['groups'] = df.groupby('Type').cumcount()%2
A,B = df[df['groups']==0], df[df['groups']==1]
输出:
**A**
Price Type groups
0 1 X 0
1 2 Y 0
4 5 X 0
6 7 Y 0
**B**
Price Type groups
2 3 Y 1
3 4 X 1
5 6 X 1
7 8 Y 1
答案 1 :(得分:1)
能否按Type的值分组并将A / B分配给该组的一半作为新列,然后仅复制分配了标签A / B的行?如果您需要精确的分组,可以根据分组的大小进行分组
答案 2 :(得分:0)
您可以使用numpy库的“ arry_split”功能,如下所示:
import numpy as np
df_split = np.array_split(df, 2)
df1 = df_split[0]
df2 = df_split[1]