python - 我有一个函数,但我想了解以下代码行在做什么
问题描述
我从 api 请求中获得了一个 json 文件,并使用 json_normalize 将其转换为数据帧。其中一列,即“venue.categories”包含字典列表。它看起来像这样:
nearby_venues.loc[0,'venue.categories']
[{'id': '4bf58dd8d48988d16a941735',
'name': 'Bakery',
'pluralName': 'Bakeries',
'shortName': 'Bakery',
'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/bakery_',
'suffix': '.png'},
'primary': True}]
我想要一个只有短名称的新列,即“Bakery”作为列值。下面的函数完成了这项工作。我需要了解幕后发生的事情。
def get_category_type(row):
try:
categories_list = row['categories']
except:
categories_list = row['venue.categories']
if len(categories_list) == 0:
return None
else:
return categories_list[0]['name']
解决方案
第一个代码块:
try:
categories_list = row['categories']
except:
categories_list = row['venue.categories']
正在做一个列的副本categories
,如果失败则venue.categories
放入变量categories_list
中。
第二块:
if len(categories_list) == 0:
return None
else:
return categories_list[0]['name']
return None
,如果列没有数据,否则返回列表的第一个元素(只有一个),然后返回key
字典内的值。
推荐阅读
- digital-signature - 带有数字签名的混合加密,下面提到的流程是否正确?
- r - 如何在 R 中使用 ggarrange 减少绘图之间的差距?
- javascript - 电子邮件地址输入的设置值不起作用
- azure-databricks - 尝试在 ADLS Gen2 上创建增量表时出现 Databricks 错误
- ios - 如何调整 CALayer (AVSampleBufferDisplayLayer) 的大小以适合 UIView,为 SwiftUI 包装
- ios - 在 Xcode 模拟器中模拟蓝牙连接
- math - 使用小册子计算半圆的主弧
- python - 在 python 编码中,如何将每次迭代的输出附加到单独的变量
- node.js - 更新 typeORM 实体中的所有记录
- typescript - 过滤器不能使用接口键中的数组调用