如何将Pandas DataFrame新增列的集合转换为列表?
解决Pandas中集合转列表的列生成问题
原始DataFrame如下:
fruit1 fruit2 [banana,apple,orange] [apple,nuts,strawberry] [apple,mango,grape] [apple,mango,grape,guava]
你当前的代码通过集合差集生成新列,但返回结果是集合格式,不符合预期的列表需求:
df["fruits_added"] = df.apply(lambda row: set(row.fruit2) - set(row.fruit1), axis=1) df["fruits_deleted"] = df.apply(lambda row: set(row.fruit1) - set(row.fruit2), axis=1)
修改方案
只需把集合运算的结果用list()包裹,就能直接转换成列表格式:
df["fruits_added"] = df.apply(lambda row: list(set(row.fruit2) - set(row.fruit1)), axis=1) df["fruits_deleted"] = df.apply(lambda row: list(set(row.fruit1) - set(row.fruit2)), axis=1)
最终输出
修改后生成的DataFrame会符合预期:
fruit1 fruit2 fruits_added fruits_deleted [banana,apple,orange] [apple,nuts,strawberry] [strawberry,nuts] [banana,orange] [apple,mango,grape] [apple,mango,grape,guava] [guava] []
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

