使用 str.split 在 Pandas 中拆分列并保留值

laz*_*zer 2 python dataframe pandas

所以我在这里遇到了一个问题:

我有一个如下所示的 Pandas 数据框:

ID Name    Value
0  Peter   21,2
1  Frank   24
2  Tom     23,21/23,60 
3  Ismael  21,2/ 21,54
4  Joe     23,1

and so on...
Run Code Online (Sandbox Code Playgroud)

我想要的是通过斜线(/)拆分“值”列,但保留所有没有这种模式的值。

像这儿:

ID Name    Value
0  Peter   21,2
1  Frank   24
2  Tom     23,21
3  Ismael  21,2
4  Joe     23,1
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我尝试了 str.split 方法,但它没有给我想要的解决方案。相反,它返回 NaN,如下所示。

My Code: df['Value']=df['value'].str.split('/', expand=True)[0]

Returns:

ID Name    Value
0  Peter   NaN
1  Frank   NaN
2  Tom     23,21
3  Ismael  21,2
4  Joe     Nan
Run Code Online (Sandbox Code Playgroud)

我所需要的只是'/' 到来之前的第一个值。

感谢任何形式的帮助!

jez*_*ael 5

删除expand=True返回列表并添加str[0]选择第一个值:

df['Value'] = df['Value'].str.split('/').str[0]
print (df)
   ID    Name  Value
0   0   Peter   21,2
1   1   Frank     24
2   2     Tom  23,21
3   3  Ismael   21,2
4   4     Joe   23,1
Run Code Online (Sandbox Code Playgroud)

如果性能很重要,请使用列表理解:

df['Value'] = [x.split('/')[0] for x in df['Value']]
Run Code Online (Sandbox Code Playgroud)

  • @Lars - `df['Value'] = df['Value'].astype(str).str.split('/').str[0]` 工作如何? (2认同)