python - Pandas Dataframe 高级拆分
问题描述
我有一个大的 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
提前致谢!
解决方案
您可以使用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
推荐阅读
- c# - MDF 文件 C# 构建替换实际数据库
- sql-server - 读取、解析和写入文本文件到数据库
- python - 如何使用字典用python修改字符串?
- python - 如果需要,在检查函数中修改数组类型
- html - 如何使图像与 flexbox 完美契合?
- python - 有没有办法在 Keras 的时代结束时获得 lambdacallback 的训练准确性?
- salesforce - Salesforce 未正确评估工作流规则标准
- authentication - Hasura 和 Auth0 - 设置自定义声明
- android - Flutter:如何使用“Multi Image Picker”降低图像质量并将输出作为“文件”?
- python - 通过匹配另一个数据框中的行来过滤熊猫数据框