【发布时间】:2021-01-14 06:06:00
【问题描述】:
我有一个数据框,其中一列的值如下:
colA colB LISTCOL
USA 100 ['ABCD (Actor)', 'XYZ (Actor, Director)', 'PQR (Producer, Writer)']
UK 1200 ['45q34y(Actor,Director, Producer)', '123 (Actor, Director)']
我想在 LISTCOL 列的每一行中取出列表的元素,以便只过滤包含 Actor 的元素。
我试过了
df['ACTOR'] = df.apply(
lambda elem: [elem for elem in df['LISTCOL'].str if "Actor" in elem],
axis=1)
但是它不起作用。 不幸的是,我的熊猫是 0.23.4,因此 df.explode() 在这种情况下不适用于我。 您能否帮助我获得我想要的输出:
输出:
colA colB ACTOR
USA 100 ['ABCD', 'XYZ']
UK 1200 ['45q34y', '123']
【问题讨论】:
-
你比当前版本的熊猫落后很多。请升级或安装 Anaconda 发行版。
-
副本有扩展列表而不爆炸的解决方案。
-
print(type(df.iloc[0, 2]))的输出是什么。如果结果为str,则必须使用df.LISTCOL = df.LISTCOL.apply(ast.literal_eval)