Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列中的字符串中获取第二个单词_Python_Pandas - Fatal编程技术网

Python 从列中的字符串中获取第二个单词

Python 从列中的字符串中获取第二个单词,python,pandas,Python,Pandas,我需要将句子的第二个单词存储在一列中。我可以用下面的一行很容易地得到第一个单词: df['First'] = df['Sentence'].astype(str).apply(lambda x: x.split()[0]) 那么,为什么要用这种方式来获得第二个单词却失败了: df['Second'] = df['Sentence'].astype(str).apply(lambda x: x.split()[1]) 给我 IndexError: list index out of range

我需要将句子的第二个单词存储在一列中。我可以用下面的一行很容易地得到第一个单词:

df['First'] = df['Sentence'].astype(str).apply(lambda x: x.split()[0])
那么,为什么要用这种方式来获得第二个单词却失败了:

df['Second'] = df['Sentence'].astype(str).apply(lambda x: x.split()[1])
给我

IndexError: list index out of range

str.split
str[1]
一起使用,如果没有第二个单词,则获取
NaN
s:

df = pd.DataFrame({'Sentence':['a','a d','s df sd']})
df['Second'] = df['Sentence'].astype(str).str.split().str[1]
print (df)
  Sentence Second
0        a    NaN
1      a d      d
2  s df sd     df
错误说明:


至少有一个句子没有空格,因此在
x.split()[1]
中选择列表的第二个值将引发错误,因为第二个列表不存在。

str.split
str[1]
一起使用,如果没有第二个单词,则获取
NaN
s:

df = pd.DataFrame({'Sentence':['a','a d','s df sd']})
df['Second'] = df['Sentence'].astype(str).str.split().str[1]
print (df)
  Sentence Second
0        a    NaN
1      a d      d
2  s df sd     df
错误说明:


至少有一个句子没有空格,因此在
x.split()[1]
中选择列表的第二个值会引发错误,因为第二个列表不存在。

非常感谢jezrael,这很好,很简单,解决了我的问题。不过,我想知道我的代码出了什么问题。@famargar-我想你的代码失败了,因为至少有一句话没有空格,所以
x.split()[1]
失败了。非常简单。我想我的问题对其他人有帮助的唯一方式是,如果我们将这些信息整合到问题或答案中。我相信在你的答案中加上这个会更公平。非常感谢你,耶斯雷尔,这很好很简单,解决了我的问题。不过,我想知道我的代码出了什么问题。@famargar-我想你的代码失败了,因为至少有一句话没有空格,所以
x.split()[1]
失败了。非常简单。我想我的问题对其他人有帮助的唯一方式是,如果我们将这些信息整合到问题或答案中。我相信在你的答案中加上这个会更公平。