Python 如何通过在数据帧中特定列的每一行中使用.join连接列表中的所有元素
这是我的数据框:Python 如何通过在数据帧中特定列的每一行中使用.join连接列表中的所有元素,python,pandas,Python,Pandas,这是我的数据框: train = pd.DataFrame({'id':[1,2,4],'features':[["A","B","C"],["A","D","E"],["C","D","F"]]}) 我尝试执行以下代码段,但我得到: TypeError:序列项0:预期字符串,找到列表 train["some"]=train["features"].map(lambda x: " ".join([i.split(" ") for i in x])) 当我在谷歌上搜索它时,我看到了一个答案,我
train = pd.DataFrame({'id':[1,2,4],'features':[["A","B","C"],["A","D","E"],["C","D","F"]]})
我尝试执行以下代码段,但我得到:
TypeError:序列项0:预期字符串,找到列表
train["some"]=train["features"].map(lambda x: " ".join([i.split(" ") for i in x]))
当我在谷歌上搜索它时,我看到了一个答案,我明白如果我的例子中的x
是列表列表,就会发生这种情况,但我的例子中显然不是这样。我知道答案,但我需要解释为什么我的代码是错误的[I.split(“”)for I in x]
应该生成一个列表列表,并假设x
的每个I
元素中都有空格可以拆分
“”。join([i.split(“”)表示x中的i])
将与“”
一起加入列表。。。但是,该列表是由列表组成的,您不能加入['a']+'+['b']
。。。这毫无意义。这就是为什么你会出错join
期望一个字符串与执行字符串连接,但它找到了一个列表
,不知道该做什么
之后,我不知道你想用lambda
做什么。看起来您正试图加入
一个列表,然后再次拆分
它/耸耸肩
如果我把重点放在你问题的标题上
train.assign(some=train.features.map(' '.join))
features id some
0 [A, B, C] 1 A B C
1 [A, D, E] 2 A D E
2 [C, D, F] 4 C D F
为了告诉您代码错误的原因,我们需要知道您正在尝试做什么。
x
是一个列表<代码>i.split(“”)是一个列表<代码>[i.split(“”)表示['A',B',C']]中的i是['A'],['B'],['C']]
,这是一个列表列表。