首页 > 解决方案 > 此等式中的 Lambda 和列表推导

问题描述

我创建了一个数据集,如下所示。

train  = pd.DataFrame({'id':[1,2,4],'features':[["A","B","C"],["A","D","E"],["C","D","F"]]})

当我执行以下行时:

train['features_t'] = train["features"].apply(lambda x: " ".join(["_".join(i.split(" ")) for i in x]))

它产生了一个很好的结果。

0    A B C
1    A D E
2    C D F

但是,我对apply中的功能很好奇。它基本上迭代训练数据框的特征列中的值。之后,它拆分 A、B、C 并在没有任何分隔符的情况下重新加入。但是当我尝试逐步执行时,它给了我一个关于拆分功能的错误。

我尝试创建一个 for 循环,然后拆分函数和连接函数,但失败了。

   for x in train['feature']:
      a = x.split(" ")
    ............................

它给了我这个

    'list' object has no attribute 'split'

我对此的理解可能有什么问题?

标签: python-3.xlambdasplitlist-comprehension

解决方案


x 是每一行的列表

如果你打印它:

for x in train['features']:
    print(x)

结果将是:

['A', 'B', 'C']
['A', 'D', 'E']
['C', 'D', 'F']

您可以使用以下方法完成连接:

for x in train['features']:
    a = ''.join(x)

将打印:ABC ADE CDF


推荐阅读