python - 在 pandas 数据框中选择具有两个唯一标识符的行并将它们存储为新数据框
问题描述
我有一个非常大的、未排序的 pandas 数据框(超过 200 万行),其中包含多列,其中两列标识这些行属于哪个类别。如果“K”和“U”的组合代表这些行的唯一类别,我想选择属于这些类别中的每一个的所有行,并将这些行存储为单独的数据框,以便稍后进行操作和分析机器学习模型。让我解释
'a' 'b' 'c' 'K' 'U' 'd'
------------------------
aaa bbb ccc 2245 23 ddd
avd bad cec 2245 23 dwq
avd bad cec 2646 23 dwq
avd bad cec 1621 23 dwq
avd bad cec 1621 26 dwq
最上面的两行具有相同的"K"和"U"值,所以我希望将它们存储在一起,但是,由于K和U的组合不同,其他行都属于不同的类别,所以这些将存储在单独的数据框中。
我的第一个“解决方案”使用 for 循环遍历数据帧的K,创建一个新的数据帧来封装包含唯一K的每一行,并为这个新的K数据帧中的每个U创建另一个 for 循环。然后,我在此循环中创建了第二个数据框,其中包含当前U的每一行。这种方法没有按预期工作,但我觉得我已经接近解决问题的方法了。整个数据帧的速度慢得让人难以忍受,如果有更快、更合适的解决方案,我们将不胜感激。我将如何以适当、更有效的方式执行此操作?
解决方案
你可以这样做:
c K U d
0 aaa 2245 23 ddd
1 avd 2245 23 dwq
2 avd 2646 23 dwq
3 avd 1621 23 dwq
4 avd 1621 26 dwq
grouped_df = dataframe.groupby(['K','U'])
for key,df in grouped_df:
print('\n',key,'\n',df.head())
(1621, 23)
c K U d
3 avd 1621 23 dwq
(1621, 26)
c K U d
4 avd 1621 26 dwq
(2245, 23)
c K U d
0 aaa 2245 23 ddd
1 avd 2245 23 dwq
(2646, 23)
c K U d
2 avd 2646 23 dwq
这样,您就有 n 个不同的数据帧,它们具有相同的“K”和“U”对值。分组后,您可以使用 get_group 方法访问单个数据帧,该方法提供如下键:
df_n=grouped_df.get_group((2245, 23))
(2245, 23)
c K U d
0 aaa 2245 23 ddd
1 avd 2245 23 dwq
推荐阅读
- python - python烧瓶简单问题
- angular - 以编程方式打开扩展面板而不单击
- python-3.x - Airbnb 房东在特定城市或地点的排名
- c - 如何在 Makefile 中输出 .txt 文件?
- mysql - TypeError: con.connect 不是函数 con.connect(function(err) {
- python - 无法将 numpy 数组重塑为 RGB 图像
- php - Foreach 是显示数组文本而不是显示数组中的实际值
- godot - 如何从其他精灵中检索变量?
- javascript - 使用 express.static() 时如何自动设置 Content-Type?
- node.js - 如何为在 aws EC2 中的 docker 上运行的 node.js 服务器设置 https