- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有 179 GB 的以下稀疏数据:
id lat long var1 var2 var3
1 52.1 0.07 A
2 58.3 5.78 C
3 46.5 -8.32 E
我想读入数据并进行过滤,以便仅保留某些经纬度坐标之间的行。在此表示中,纬度的示例范围是 51.0 到 59.0,经度的范围是 -1.0 到 6.0
到目前为止,我所拥有的只是一个 CSV 字典阅读器和一个不起作用的字典理解:
with open("test_data.csv", 'r', encoding="Latin-1") as f:
reader = csv.DictReader(f)
rows = [row for row in reader if row['lat'] >= 51.0 if row['lat'] <= 59.0 if row['long'] >= -1.0 if row['long'] <= 6.0]
print(rows)
目前我得到一个 TypeError: Unorderedable types: str() >= int() 这可能是因为 DictReader 将事物作为字符串引入,并且它们需要是整数值。我不确定如何将 int() 插入到 dict 理解中。
最终,我希望输出选择以下数据:
id lat long var1 var2 var3
1 52.1 0.07 A
2 58.3 5.78 C
我对字典的格式很矛盾,因为我想稍后将数据写回到 csv 中。
最佳答案
除非您遇到内存问题,否则pandas
应该能够为您完成这项工作。如果您还没有这样做,您可能需要先安装 pandas
,但使用 pip
应该很容易(并且是一个很棒的软件包)
import pandas as pd
df = pd.read_csv('test_data.csv')
filtered = df[(df['lat'].between(51.0, 59.0, inclusive=True)) &
(df['long'].between(-1.0, 6.0, inclusive=True))]
filtered.to_csv('filtered_test_data.csv')
如果您确实遇到内存问题,使用 chunksize
参数可以让您只将一定数量的行读入内存。由于您的过滤每行都是独立的,因此我们可以对每个 block 应用此过滤并将它们全部组合起来:
import pandas as pd
chunks = pd.read_csv('test_data.csv', chunksize=1000000)
filtered = pd.concat([df[(df['lat'].between(51.0, 59.0, inclusive=True)) &
(df['long'].between(-1.0, 6.0, inclusive=True))]
for df in chunks])
filtered.to_csv('filtered_test_data.csv')
如果这仍然不起作用,您可以尝试保存每个 block 并仅在最后合并:
import pandas as pd
chunks = pd.read_csv('test_data.csv', chunksize=1000000)
i = 0
for df in chunks:
filtered = df[(df['lat'].between(51.0, 59.0, inclusive=True)) &
(df['long'].between(-1.0, 6.0, inclusive=True))]
filtered.to_csv('chunk_{}.csv'.format(i))
i += 1
final = pd.concat(pd.read_csv('chunk_{}.csv'.format(j)) for j in range(i))
final.to_csv('final.csv')
关于python - 使用 CSV DictReader 读取行并根据经纬度范围进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46192289/
我对纬度和经度有疑问。当我想获取坐标时,只有 24 个 API 检索坐标。其他人没有。不知道为什么 我正在使用 GPSTracker 服务 public Location getLocation()
我有一个表(DB2 数据库),其中包含城市信息和相应的经纬度以及与城市相关的许多其他信息。我的要求是: 我的应用程序的输入将是纬度和经度,它们可能是或许多不是存储在数据库中的精确纬度和经度。我需要借助
我在经度和纬度上有一个位置 (A)。 我有一条线段,起点(B)和终点(C)在经度和纬度上。 我试图计算的是从 A 到 BC 线的最短距离。 换句话说,从 A 到最近点(在 BC 线上)的距离(以米为单
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
这个问题在这里已经有了答案: Find nearest latitude/longitude with an SQL query (18 个答案) 关闭 6 年前。 我正在尝试编写一个在某个位置附近
我正在尝试将 Yelp 的 API 与纬度/经度位置结合使用。我使用了 yelp 给出的 javascript 代码,它基本上有一个参数数组,并像这样将值插入其中: parameters.push([
我有一大组纬度和经度需要存储在 MySQL 数据库中。我正在阅读有关要使用的字段类型的相互矛盾的建议。 数据的一个例子是... Lat | Long -----------------
在我的应用程序中,我通过以特定时间间隔从服务器获取他们的位置(纬度和经度)来显示其他人的位置。 获取后,我必须删除所有注释并删除基于服务器数据的新注释。 但它看起来非常低效,因为当我们以前存在相同用户
我正在尝试将鼠标在谷歌地图上的位置转换为 LatLng 对象。我看到很多关于通过谷歌地图“点击”事件等获取位置的帖子,如下所示: google.maps.event.addListener(map,
我的 SQLite 数据库中存储了经纬度数据,我想获取与我输入的参数最近的位置(例如,我当前的位置 - 纬度/经度等)。 我知道这在 MySQL 中是可能的,并且我已经进行了相当多的研究,认为 SQL
伙计们,我在我的 Android 应用程序中实现了谷歌地图,并开始创建一个标记,我在 map 中间放置了一个标记图像。现在,我希望每当用户拖动 map 时,我都能得到 map 中心的位置(我放置图像的
我正在实现 GPS 跟踪器以从 http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/ 获取经度和纬度.
我有一个多边形形状文件(可下载 here ),我想从中创建一个包含 3 列的 data.frame ,其中包含: 多边形 ID 质心纬度 质心经度 来自这个答案here ,我知道以 Formal Cl
有没有办法使用facebook api以(纬度和经度格式)获取用户的位置? 我能够获得位置名称和其他属性,但不能获得该地点的经纬度。 javascript中是否有相同的API。 最佳答案 如果您有用户
在我的“原生”Android 应用程序中,我试图计算 map 上两个位置之间以英尺和/或米(如乌鸦飞翔)为单位的距离。理想情况下,会有一种方法将两个 LatLng 值(因为这是我随时可用的)作为输入并
我想使用 Google API 获取 GPS 位置。 我的代码: mGoogleApiClient = new GoogleApiClient.Builder(this)
这个问题在这里已经有了答案: How to calculate the latlng of a point a certain distance away from another? (6 个答案)
我是一名优秀的程序员,十分优秀!