需要帮助在my DataFrame(Python)中拆分列吗

2024-09-30 14:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python数据框“dt”,其中一个dt列“betName”中填充了一些对象,这些对象的名称后面有时有+/-数字。我试图找出如何将“betName”分为两列“betName”&;“line”,其中“betName”只是名称,“line”具有+/-数字或常规数字

请看截图,谢谢您的帮助

example of problem and desired result

dt["betName"]


Tags: andof数据对象名称examplelinedt
2条回答

编辑:在执行正则表达式之前添加拆分。这仅将正则表达式应用于最后一个空格之后的单元格信息

我认为需要用正则表达式提取下注信息

df["line"] = df["betName"].apply(lambda x: x.split()[-1]).str.extract('([0-9.+-]+)')

下面是正则表达式的工作原理-the()设置捕获组,即指定要提取的信息

方括号内的内容是一个字符类,因此这里它匹配0-9、+或-符号和句号之间的任何数字

方括号后的加号表示匹配字符类中任何内容的一个或多个重复

请尝试以下(更新的)代码:

df2=df['betName'].str.split(r' (?=[+-]\d{1,}\.?\d{,}?)', expand=True).astype('str')

解释。您可以使用str.split通过正则表达式将行中的文本拆分为两列或更多列:

  (?=[+-]\d{1,}\.?\d{,}?)

' '-第一个是空格字符

()-表示组的开始和结束

?=-前瞻性断言。匹配如果。。。匹配下一个,但不使用任何字符串

[+-]-一组字符。它将匹配+或-

\d{1,}-\d是一个从0到9的数字,数字数为{start, end}。这里是指从1到任意数字:12004000等

\.?-\.表示点和?-前面表达式组或符号的0或1个重复

str.split(pattern=None,n=-1,expand=False)

pattern-要拆分的字符串或正则表达式。如果未指定,则按空格分割

n-输出中的拆分数。无、0和-1将被解释为返回所有拆分

expand-将拆分的字符串展开为单独的列

  • True用于将拆分的组放置到不同的列中
  • False用于一行中字符串的系列/索引列表

通过.astype('str')函数,您可以将数据帧转换为字符串类型

输出。

The output.

相关问题 更多 >