需要帮助拆分我的 DataFrame 中的列 (Python)
Need help splitting a column in my DataFrame (Python)
我有一个 Python DataFrame“dt”,其中一个 dt 列“betName”充满了有时在名称后有 +/- 数字的对象。我想弄清楚如何将“betName”分成两列“betName”和“line”,其中“betName”只是名称,“line”有 +/- 数字或常规数字
请看截图,谢谢帮助!
example of problem and desired result
dt["betName"]
编辑:在执行正则表达式之前添加了一个拆分。这仅将正则表达式应用于最后一个白色 space.
之后的单元格信息
我认为你需要用正则表达式提取投注信息。
df["line"] = df["betName"].apply(lambda x: x.split()[-1]).str.extract('([0-9.+-]+)')
正则表达式的工作原理如下 - () 设置捕获组,即指定要提取的信息。
方括号内的内容是一个字符class,所以这里它匹配0-9中的任意数字,+或-符号和句号。
方括号后的加号表示匹配字符class.
中任何内容的一次或多次重复
试试这个(已更新)代码:
df2=df['betName'].str.split(r' (?=[+-]\d{1,}\.?\d{,}?)', expand=True).astype('str')
说明。您可以使用str.split
通过正则表达式将行中的文本拆分为2个或更多列:
(?=[+-]\d{1,}\.?\d{,}?)
' '
- Space 第一个字符。
()
- 表示组的开始和结束。
?=
- 前瞻断言。匹配 if ... 匹配下一个,但不消耗任何字符串。
[+-]
- 一组字符。它将匹配 + 或 -.
\d{1,}
- \d
是从 0 到 9 的数字,位数为 {start, end}
。这里表示从 1 到任意数字:1,200,4000 等等
\.?
- \.
表示一个点,?
- 前面的表达式组或符号重复 0 次或 1 次。
str.split(pattern=None, n=- 1, expand=False)
pattern
- 要拆分的字符串或正则表达式。如果未指定,按空格拆分
n
- 输出中的分割数。 None,0 和 -1 将被解释为 return 所有拆分。
expand
- 将拆分的字符串扩展到单独的列中。
True
用于将拆分组放入不同的列中
False
连续 Series/Index 个字符串列表。
通过.astype('str')
函数将数据帧转换为字符串类型。
输出。
我有一个 Python DataFrame“dt”,其中一个 dt 列“betName”充满了有时在名称后有 +/- 数字的对象。我想弄清楚如何将“betName”分成两列“betName”和“line”,其中“betName”只是名称,“line”有 +/- 数字或常规数字
请看截图,谢谢帮助!
example of problem and desired result
dt["betName"]
编辑:在执行正则表达式之前添加了一个拆分。这仅将正则表达式应用于最后一个白色 space.
之后的单元格信息我认为你需要用正则表达式提取投注信息。
df["line"] = df["betName"].apply(lambda x: x.split()[-1]).str.extract('([0-9.+-]+)')
正则表达式的工作原理如下 - () 设置捕获组,即指定要提取的信息。
方括号内的内容是一个字符class,所以这里它匹配0-9中的任意数字,+或-符号和句号。
方括号后的加号表示匹配字符class.
中任何内容的一次或多次重复试试这个(已更新)代码:
df2=df['betName'].str.split(r' (?=[+-]\d{1,}\.?\d{,}?)', expand=True).astype('str')
说明。您可以使用str.split
通过正则表达式将行中的文本拆分为2个或更多列:
(?=[+-]\d{1,}\.?\d{,}?)
' '
- Space 第一个字符。
()
- 表示组的开始和结束。
?=
- 前瞻断言。匹配 if ... 匹配下一个,但不消耗任何字符串。
[+-]
- 一组字符。它将匹配 + 或 -.
\d{1,}
- \d
是从 0 到 9 的数字,位数为 {start, end}
。这里表示从 1 到任意数字:1,200,4000 等等
\.?
- \.
表示一个点,?
- 前面的表达式组或符号重复 0 次或 1 次。
str.split(pattern=None, n=- 1, expand=False)
pattern
- 要拆分的字符串或正则表达式。如果未指定,按空格拆分
n
- 输出中的分割数。 None,0 和 -1 将被解释为 return 所有拆分。
expand
- 将拆分的字符串扩展到单独的列中。
True
用于将拆分组放入不同的列中False
连续 Series/Index 个字符串列表。
通过.astype('str')
函数将数据帧转换为字符串类型。
输出。