- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据框,其中两列是纬度和经度。每个经纬度对代表一个位置,我想按该位置进行分组。
我可以通过将两列转换为一列元组来执行此 groupby 操作,然后对该列进行 groupby 操作。然而,我的实际数据框非常大,添加另一列确实会减慢速度。我想知道在 pandas 中是否有更惯用的方法来执行此操作。
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: key = np.random.randint(low = 1, high = 20, size = 100)
...: data = np.random.random(size = (100))
...: d1 = {'key':key, 'time':range(1,101), 'data':data}
...: df1 = pd.DataFrame(d1)
...: print(df1.shape)
...: df1.head()
(100, 3)
Out[3]:
key time data
0 3 1 0.778231
1 13 2 0.822494
2 4 3 0.053416
3 8 4 0.894341
4 7 5 0.884310
In [4]: key = range(1,21)
...: lat = np.random.randint(low = 0, high = 90, size = 20)
...: lon = np.random.randint(low = 0, high = 90, size = 20)
...: d2 = {'key':key, 'lat':lat, 'lon':lon}
...: df2 = pd.DataFrame(d2)
...: print(df2.shape)
...: df2.head()
(20, 3)
Out[4]:
key lat lon
0 1 36 81
1 2 6 57
2 3 84 4
3 4 61 0
4 5 54 69
In [5]: result = pd.merge(df1, df2).sort_values('time')
...: result.head()
Out[5]:
key time data lat lon
0 3 1 0.778231 84 4
4 13 2 0.822494 12 19
13 4 3 0.053416 61 0
18 8 4 0.894341 49 34
23 7 5 0.884310 8 13
(确保在框中向下滚动以查看 In [5]
的输出,因为这就是我的最终数据框的样子)
此时,我希望能够执行类似于 result.groupby(('lat','lon'))
的操作,并让 pandas 将两列视为一列。有没有办法做到这一点?或者我应该硬着头皮创建一个新的数据元组列?
最佳答案
这不是部分吗
At this point I would like to be able to do something like
result.groupby(('lat','lon'))
这正是您正在寻找的答案吗?它将根据您想要的任意数量的列中的唯一值进行分组。
示例数据:
key time data lat lon
3 1 0.231000 84 4
4 1 0.832310 22 11
5 1 1.210000 84 4
6 1 3.778231 22 11
8 1 15.450000 84 4
如何对这两列中的唯一值进行分组:
import pandas as pd
for name, group in df.groupby(["lat", "lon"]):
print("Group indices: {}".format(name))
print(group)
输出:
Group indices: (22, 11)
key time data lat lon
1 4 1 0.832310 22 11
3 6 1 3.778231 22 11
Group indices: (84, 4)
key time data lat lon
0 3 1 0.231 84 4
2 5 1 1.210 84 4
4 8 1 15.450 84 4
这不是你想要的还是我误解了什么?
关于python - Pandas groupby : treat two columns as one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138724/
在C中,我想运行linux命令。即, int status; status=system("lftp ftp://192.168.1.1 -e "mget -E /2015/Date*/*Snap/*
在我的内核模块中,我有以下读取函数: static ssize_t sample_read(struct file *filp, char *buffer, size_t length, loff_t
我目前正在开展一个学校项目,它需要一些 JPA。我并不是这方面的专家,所以我想我可以向你们寻求一些帮助。 它是 NetBeans IDE 中的一个 Maven 项目,更具体地说是一个 Java Web
我有一张从扫描仪扫描的图像。图像的某个区域故意不包含任何内容(所以只有白色)。图像的其余部分包含需要分析的数据。这个纯白色区域(称为“引用区域”)应用于确定分析代码应将什么值视为“白色”。来自扫描仪的
假设w之前没有被定义,下面的JS代码给出了ReferenceError: w is not defined: w?.y; 而这段代码只是返回undefined: let w; w?.y; 为什么 ?.
我正在尝试从 Unity 编辑器中配置我的项目,以将所有警告消息视为错误,但我似乎找不到任何与此相关的文档。有没有办法为我的项目配置它?非常感谢! 最佳答案 在 ProjectFolder/Asset
我的目标是在文本中找到一个词。需要注意的是,我需要将撇号视为文本。 让我用一个例子来解释。假设我要在文本中查找单词 don:don't trust don。我需要匹配 don 而不是 don't。 我
就上下文而言,我最近发现了函数式编程,并试图将其合并到现有的 Web API 解决方案中。 到目前为止,我一直在阅读Functional Programming in C#我一直在尝试创建一个新的 C
编译以下C模块 static const int i = 1; void f (const int *i); int g (void) { f (&i); return i; } 在 x86_
我正在使用 gson 将 java 对象序列化为 json。 Gson gson = new GsonBuilder().serializeNulls().create(); 此构建器可以很好地处理空
在 Delphi 2009 中,您在哪里打开将警告视为错误的选项? 最佳答案 我发布这篇文章后不久就找到了答案!可能对其他人有用。 导航至“项目 -> 选项 -> Delphi 编译器 -> 提示和警
我目前正在开发一个 Makefile 项目,由于我使用的是 boost,所以在编译过程中我收到了大量警告,因此我不能只在整个构建中启用 -Werror。但是,我有一组日志记录宏,可以有效地为我包装 p
我正在使用 SVG 文本路径为封闭路径周围的单词设置动画。如何让动画将路径视为一个圆圈,并让文本从路径的末尾平滑过渡到开头?现在它完成绘制文本(剪切溢出),直到文本消失,然后通过在开头弹出单词重新开始
在 Visual Studio 中有一个选项告诉编译器将警告视为错误,我如何使用 Qt Creator 设置它(我使用 VS2008 作为编译器)。 最佳答案 对于两种编译器(VS 和 MinGW)使
clap crate 为 -h 选项实现了内置行为,但它似乎没有为 -? 做同样的事情。有没有办法告诉它这样做? 最佳答案 我在 clap repository 上开了一个问题.作者/主要贡献者已在那
在我的 Visual C++ 代码中,我想要 /WX - “将警告视为错误”。这让我处理每个警告,包括 C4996 - “X was declared deprecated” 我不想解决 - 我现在不
我们已经开始了一个新项目,但现有项目也有这个问题。问题是,当我们用警告级别 4 编译时,我们也想打开 '将所有警告视为错误' 我们目前无法执行此操作,因为生成的文件(特别是 reference.cs
此代码在所有主流浏览器中是否安全? var string = '123' alert(string[1] == '2') // should alert true 最佳答案 不,这不安全。 Inter
我正在使用以下(高度简化的)MSBuild 脚本: 这对于转换单个配置文件非常有效,而无需通过 MSDeploy。 但是,假设在我的
我正在使用 WDK 的 Build 实用程序构建打印机驱动程序。我需要关闭“将警告视为错误”。它在 Visual Studio 项目文件中被关闭,但这显然不会影响 Build。 有谁知道如何做到这一点
我是一名优秀的程序员,十分优秀!