python - Pandas 将单元格值应用于 geonamescache 函数/大文件
问题描述
新手在这里。我想:
加载 CSV(450 万行)- 完成
分配列 - 完成
创建一个新列“搜索”- 完成
对 Search 应用一个函数,以便它检查城市名称是否在 geonamescache 的城市列表中。geonamescache 有 get_cities_by_name() 应该采用 name 参数,返回带有数据的字典,如果没有找到则不返回。我在将名称作为参数传递给 pandas apply 时遇到问题。欢迎任何建议。
import geonamescache
import pandas as pd
gc = geonamescache.GeonamesCache()
cities = gc.get_cities_by_name()
dtypes_dict = {
0: int, # geonameid
1: str, # name
2: str, # asciiname
3: str, # alternatenames
4: float, # latitude
5: float, # longitude
6: str, # feature class
7: str, # feature code
8: str, # country code
9: str, # cc2
10: str, # admin1 code
11: str, # admin2 code
12: str, # admin3 code
13: str, # admin4 code
14: int, # population
15: int, # elevation
16: int, # dem (digital elevation model)
17: str, # timezone
18: str # modification date yyyy-MM-dd
}
df = pd.read_csv('12.txt', sep = '\t', header = None, quoting = 3, iterator=True, chunksize=100, engine='python', dtype=dtypes_dict, names = ['geonameid', 'name', 'asciiname', 'alternatenames', 'latitude', 'longitude', 'feature_class', 'feature_code', 'country_code', 'cc2', 'admin1_code', 'admin2_code', 'admin3_code', 'admin4_code', 'population', 'elevation', 'dem', 'timezone', 'modification_date'])
df["Search"] = df['asciiname'].apply(cities())
df.to_csv("GeoSearch.txt")
我收到此错误
Traceback (most recent call last):
File "C:/Users/u6022697/Documents/python work/5pandas.py", line 5, in <module>
cities = gc.get_cities_by_name()
TypeError: get_cities_by_name() missing 1 required positional argument: 'name'
Process finished with exit code 1
解决方案
我不知道这是否仍然相关,但我目前也在使用 geonamescache,所以我能够遇到这个问题。但是对于任何正在寻找这个的人来说,不幸的是,他们没有这样的功能,您可以为 get_cities_by_name() 方法传递一个列表,因为它需要基于定义的单个名称您必须调用它for 循环或类似方法中的方法,以便将其用于整个列。
推荐阅读
- javascript - 如何根据刀片模板中的数据库字段设置选定选项?
- python-3.x - 当你在一个类中重写 __eq__ 时,是否还需要重写 __hash__?
- javascript - 基于多个单选按钮输入使用 jquery 更新图像
- jquery - jQuery在元素父元素内移动元素
- codeigniter - Codeigniter 4 电流/有源控制器
- azure - 如何从 azure 中的单个 Web 应用程序 (Umbraco) 自动为不同客户动态创建新环境?
- c++ - 有没有办法确保代码只使用 std 中的名称,而不是全局命名空间?
- python - Python复制到新列表并排除项目
- angular - 可观察的
作为子组件中的输入参数 - python - 如何使用 python 将现有文件推送到 gitlab 存储库