如何将 Dataframe 列拆分为两部分并用拆分值替换列

Ale*_*lex 0 python

如何将数据帧列拆分为两部分,以便稍后将数据帧列中的值替换为拆分后的值。例如,我有一个像这样的数据框:

col1       col2
"abc"      "A, BC"
"def"      "AX, Z"
"pqr"      "P, R"
"xyz"      "X, YZ"
Run Code Online (Sandbox Code Playgroud)

我想在 之前提取值,并用提取的值替换该单元格。因此,输出应如下所示:

col1   col2
abc    A
def    AX
pqr    P
xyz    X
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样做:

df['col2'].apply(lambda x: x.split(',')[0])
Run Code Online (Sandbox Code Playgroud)

但它给了我错误。请建议我如何获得所需的输出。

Fab*_*enP 5

在这种情况下,您可以使用 , 的str方法,该方法pandas将使用矢量化函数。它也会更快apply

df.col2 = df.col2.str.split(', ').str[0]

>>> df
Out[]:
  col1 col2
0  abc    A
1  def   AX
2  pqr    P
3  xyz    X
Run Code Online (Sandbox Code Playgroud)

要在Series包含字符串上使用它,您应该str在任何函数之前调用该属性。有关更多详细信息,请参阅文档

在上述解决方案中,请注意.str.split(', ')替换split. 并.str[0]允许切片分裂的结果,而只是使用.str.split(', ')[0]将得到指数0 Series