【发布时间】:2020-02-03 15:41:37
【问题描述】:
我正在尝试通过使用 Python 和 Pandas 库对数据科学进行一些实验来亲自动手。
最近我拿到了一个 jupyter notebook 并偶然发现了一段我无法弄清楚它是如何工作的代码?
这条线
md['genres'] = md['genres'].fillna('[]').apply(literal_eval).apply(lambda x: [i['name'] for i in x] if isinstance(x, list) else [])
数据集带有一个包含键值对的流派列,如果存在多个值,上面的代码会删除键并仅用值替换所有内容例如,作为两者之间的分隔符插入
喜剧 |行动 |剧情
我想知道代码实际上是如何工作的!为什么它需要来自ast的literal_eval? lambda 函数在做什么?!有没有更简洁明了的写法?
【问题讨论】:
-
使用
pandas并不是将困难的原因方法链接在一起。因此,这意味着您必须了解每种方法的作用,例如.fillna()、apply(literal_eval)等,以了解发生了什么变化。 -
我的建议是在每个链式函数中将代码拆分为多个片段(将每个 .apply() 移到自己的行上并每次重新分配列)并在应用每个函数后检查输出
标签: python pandas numpy dataframe lambda