尝试从 Pandas DataFrame 中的字典访问第一个值时出现浮点错误
Getting a float error when trying to access first value from a dictionary in a Pandas DataFrame
我有一个 DataFrame,其中一列包含字典。我正在尝试使用 apply 和 lambda 函数 return 字典中的第一个值,但我不断收到与浮点数相关的错误。这很令人困惑,因为我有一个字典而不是我试图遍历的浮点数。
错误消息示例:
'float'对象没有属性'get'
当我 运行 下面的代码时,我将 dict 作为对象类型
type(all_addr['street address'][0])
但是当我运行这个的时候,我得到了关于浮点数的错误
all_addr['street address'].apply(lambda x: x.get('address_components'))
这是存储在 DataFrame 列中的字典示例:
{'address_components': [{'long_name': '871',
'short_name': '871',
'types': ['street_number']},
{'long_name': '8th Avenue', 'short_name': '8th Ave', 'types': ['route']},
{'long_name': 'Manhattan',
'short_name': 'Manhattan',
'types': ['political', 'sublocality', 'sublocality_level_1']},
{'long_name': 'New York',
'short_name': 'New York',
'types': ['locality', 'political']},
{'long_name': 'New York County',
'short_name': 'New York County',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'New York',
'short_name': 'NY',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United States',
'short_name': 'US',
'types': ['country', 'political']},
{'long_name': '10019', 'short_name': '10019', 'types': ['postal_code']},
{'long_name': '5761',
'short_name': '5761',
'types': ['postal_code_suffix']}],
'formatted_address': '871 8th Ave, New York, NY 10019, USA',
'geometry': {'location': {'lat': 40.7637343, 'lng': -73.985334},
'location_type': 'ROOFTOP',
'viewport': {'northeast': {'lat': 40.76508328029149,
'lng': -73.9839850197085},
'southwest': {'lat': 40.7623853197085, 'lng': -73.9866829802915}}},
'place_id': 'ChIJtVPYoldYwokRyDoPj7jHHwk',
'plus_code': {'compound_code': 'Q277+FV New York, NY, USA',
'global_code': '87G8Q277+FV'},
'types': ['street_address']}
本质上,我只是想从该字典中获取 address_components 列表,这样我就可以获取该列表中包含的一些数据元素。我之前在 DataFrames 和字典中使用过类似的功能,但没有 运行 出现此错误。
我 运行 在 Google Colab 中使用它,字典数据来自 Google 地图 API。
它可能有助于显示输出
all_addr['street address'].apply(lambda x: type(x))
。此外,.apply()
仅从列中获取值非常慢,因此 pd.json_normalize()
可能有助于为您提取 address_components 列表。
我有一个 DataFrame,其中一列包含字典。我正在尝试使用 apply 和 lambda 函数 return 字典中的第一个值,但我不断收到与浮点数相关的错误。这很令人困惑,因为我有一个字典而不是我试图遍历的浮点数。
错误消息示例: 'float'对象没有属性'get'
当我 运行 下面的代码时,我将 dict 作为对象类型
type(all_addr['street address'][0])
但是当我运行这个的时候,我得到了关于浮点数的错误
all_addr['street address'].apply(lambda x: x.get('address_components'))
这是存储在 DataFrame 列中的字典示例:
{'address_components': [{'long_name': '871',
'short_name': '871',
'types': ['street_number']},
{'long_name': '8th Avenue', 'short_name': '8th Ave', 'types': ['route']},
{'long_name': 'Manhattan',
'short_name': 'Manhattan',
'types': ['political', 'sublocality', 'sublocality_level_1']},
{'long_name': 'New York',
'short_name': 'New York',
'types': ['locality', 'political']},
{'long_name': 'New York County',
'short_name': 'New York County',
'types': ['administrative_area_level_2', 'political']},
{'long_name': 'New York',
'short_name': 'NY',
'types': ['administrative_area_level_1', 'political']},
{'long_name': 'United States',
'short_name': 'US',
'types': ['country', 'political']},
{'long_name': '10019', 'short_name': '10019', 'types': ['postal_code']},
{'long_name': '5761',
'short_name': '5761',
'types': ['postal_code_suffix']}],
'formatted_address': '871 8th Ave, New York, NY 10019, USA',
'geometry': {'location': {'lat': 40.7637343, 'lng': -73.985334},
'location_type': 'ROOFTOP',
'viewport': {'northeast': {'lat': 40.76508328029149,
'lng': -73.9839850197085},
'southwest': {'lat': 40.7623853197085, 'lng': -73.9866829802915}}},
'place_id': 'ChIJtVPYoldYwokRyDoPj7jHHwk',
'plus_code': {'compound_code': 'Q277+FV New York, NY, USA',
'global_code': '87G8Q277+FV'},
'types': ['street_address']}
本质上,我只是想从该字典中获取 address_components 列表,这样我就可以获取该列表中包含的一些数据元素。我之前在 DataFrames 和字典中使用过类似的功能,但没有 运行 出现此错误。
我 运行 在 Google Colab 中使用它,字典数据来自 Google 地图 API。
它可能有助于显示输出
all_addr['street address'].apply(lambda x: type(x))
。此外,.apply()
仅从列中获取值非常慢,因此 pd.json_normalize()
可能有助于为您提取 address_components 列表。