Pandas将单元格值应用于geonamescache函数/大文件



这里是新手。我想:

加载CSV(4,5mln行(-完成

分配列-完成

创建一个新列"搜索"-完成

将函数应用于Search,以便检查城市名称是否在geonamescache中的城市列表中。geonamescache具有get_cities_by_name((,它应该接受name参数,返回一个带数据的字典,如果找不到,则返回none。我在把这个名字传给熊猫时遇到了问题。欢迎提出任何建议。

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

查看错误。它告诉您需要将名称传递给get_cities_by_name。查看您的代码:

cities = gc.get_cities_by_name()

请注意,没有将名称传递给期望传递名称的函数。尝试

cities = gc.get_cities_by_name("New York")

我不知道这是否仍然相关,但我目前也在使用geonamescache,所以我能够遇到这个问题。但对于那些也在寻找这个的人来说,不幸的是,他们没有这样的功能,你可以传递get_cities_by_name((方法的列表,因为它需要基于定义的单个名称。你必须在for循环或类似的东西中调用这个方法,才能将它用于整个列。

最新更新