【发布时间】:2019-11-10 14:54:12
【问题描述】:
我是 python 新手,正在学习使用数据框和列表推导。 我有以下数据框:
df1=pd.DataFrame({'names':[[['Hans Peter'],['Harry Potter']],[['bla bla'],['some string']]]})
现在我想将每个子列表拆分为单词。 对于我可以使用的单个列表列表
x=[['Hans Peter'],['Harry Potter'],['bla bla'],['some string here']]
res=[]
for list in x:
res.append(str(list[0]).split())
但是我怎样才能在数据帧上迭代呢?我想我必须建立一个列表理解,然后使用apply() 方法来超越.append?但我不知道该怎么做。
我会为这样的单个列表构建列表理解:
res = [str(list[0]).split for list in x]
但我得到一个包含此功能的列表:
[<function str.split(sep=None, maxsplit=-1)>,...]
DataFrame 的预期输出是
0 [['Hans','Peter],['Harry','Potter']]
1 [['bla','bla'],['some','string']]
【问题讨论】:
-
你的预期输出是什么?
-
刚刚更新 ;)
-
在您的列表理解中,您犯了两个常见错误:您使用的是
.split而不是.split()(这就是它返回函数而不是结果的原因),并且您重新使用list作为变量,这会影响内置的list类型并导致问题