Python 如何使用索引列表对列进行切片?

Python 如何使用索引列表对列进行切片?,python,pandas,Python,Pandas,我正在尝试从dataframe中的字符串中提取前两个单词 df[“名称”] 为了获得第二个“”(空格)的索引,我尝试了这个方法,但找到了return NaN,而不是返回第二个空格之前的字符数 df["temp"] = df["Name"].str.find(" ")+1 df["temp"] = df["Status"].str.find(" ", start=df["

我正在尝试从dataframe中的字符串中提取前两个单词

df[“名称”]

为了获得第二个“”(空格)的索引,我尝试了这个方法,但找到了return NaN,而不是返回第二个空格之前的字符数

df["temp"] = df["Name"].str.find(" ")+1
df["temp"] = df["Status"].str.find(" ", start=df["Status"], end=None)
df["temp"]
0   NaN
1   NaN
2   NaN
3   NaN
最后一步是对这些名称进行切片,我尝试了这段代码,但没有成功

df["Status"] = df["Status"].str.slice(0,df["temp"])
df["Status"]
0   NaN
1   NaN
2   NaN
3   NaN

expected return

0   Anthony Frank
1   John Rodney
2   Robert Dean
3   Geoffrey Joseph
如果你有更有效的方法,请让我知道

df['temp'] = df.Name.str.rpartition().get(0)
df
输出

    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean Silva
3   Geoffrey Joseph Rowley      Geoffrey Joseph
    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean
3   Geoffrey Joseph Rowley      Geoffrey Joseph
编辑

如果输出中只需要前两个元素

df['temp'] = df.Name.str.split().str[:2].str.join(' ')
df

df['temp'] = df.Name.str.split().apply(lambda x:' '.join(x[:2]))
df
df['temp'] = df.Name.str.split().apply(lambda x:' '.join([x[0], x[1]]))
df

df['temp'] = df.Name.str.split().apply(lambda x:' '.join(x[:2]))
df
df['temp'] = df.Name.str.split().apply(lambda x:' '.join([x[0], x[1]]))
df
输出

    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean Silva
3   Geoffrey Joseph Rowley      Geoffrey Joseph
    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean
3   Geoffrey Joseph Rowley      Geoffrey Joseph
输出

    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean Silva
3   Geoffrey Joseph Rowley      Geoffrey Joseph
    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean
3   Geoffrey Joseph Rowley      Geoffrey Joseph
编辑

如果输出中只需要前两个元素

df['temp'] = df.Name.str.split().str[:2].str.join(' ')
df

df['temp'] = df.Name.str.split().apply(lambda x:' '.join(x[:2]))
df
df['temp'] = df.Name.str.split().apply(lambda x:' '.join([x[0], x[1]]))
df

df['temp'] = df.Name.str.split().apply(lambda x:' '.join(x[:2]))
df
df['temp'] = df.Name.str.split().apply(lambda x:' '.join([x[0], x[1]]))
df
输出

    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean Silva
3   Geoffrey Joseph Rowley      Geoffrey Joseph
    Name                        temp
0   Anthony Frank Hawk          Anthony Frank
1   John Rodney Mullen          John Rodney
2   Robert Dean Silva Burnquis  Robert Dean
3   Geoffrey Joseph Rowley      Geoffrey Joseph

您可以使用str.index(substring)代替str.find,它返回在字符串中找到的子字符串的最小索引(如“”,空格)。然后,您可以按该索引拆分字符串,并将上述内容重新应用于结果列表中的第二个字符串。

您可以使用str.index(子字符串)而不是str.find,它返回字符串中找到的子字符串的最小索引(如“”,空格)。然后,您可以将该字符串按该索引拆分,并将上述内容重新应用于结果列表中的第二个字符串。

如果该名称有3个以上的名称,则与“Robert Dean Silva Burnquis”不同,它将返回“Robert Dean Silva”编辑了仅从字符串中提取前两个元素的答案。如果名称有3个以上的名称,则与“Robert Dean Silva Burnquis”不一样,将返回“Robert Dean Silva”编辑了仅从字符串中提取前两个元素的答案。