Python 拆分字符串值以在中创建两个新列

Python 拆分字符串值以在中创建两个新列,python,pandas,dataframe,split,Python,Pandas,Dataframe,Split,我有以下数据框: df = pd.DataFrame() df['Name'] = ['A','B','C'] df['Value'] = ['2+0.5','1+0.2','2-0.06'] 我想做的是分割值并分配给两个新列。 这意味着我期望的输出如下: 值列中的元素将被拆分为两个,我将在列中重复使用符号 我非常感谢你的建议 谢谢 IIUC newdf=df.Value.str.split('([-+])+',expand=True) newdf[2]=newdf[1].map({'+':1

我有以下数据框:

df = pd.DataFrame()
df['Name'] = ['A','B','C']
df['Value'] = ['2+0.5','1+0.2','2-0.06']
我想做的是分割值并分配给两个新列。 这意味着我期望的输出如下: 值列中的元素将被拆分为两个,我将在列中重复使用符号

我非常感谢你的建议

谢谢

IIUC

newdf=df.Value.str.split('([-+])+',expand=True)
newdf[2]=newdf[1].map({'+':1,'-':-1})*newdf[2].astype(float)
df[['value1','value2']]=newdf[[0,2]]
df
Out[30]: 
  Name   Value value1  value2
0    A   2+0.5      2    0.50
1    B   1+0.2      1    0.20
2    C  2-0.06      2   -0.06
IIUC


他想把负片保持在0.06。谢谢你的建议。如何在0.06中包含负号你好,非常感谢你的建议,非常感谢。我有如下稍微不同的拆分:假设我想在unique sprint中拆分一个字符串。我该怎么做呢。例如,我的字符串包含abcdf 0:2 dfrgh,我想在0:2拆分。(也就是说,我有两个字符串abcdf和dfrgh。但是,拆分器0:2对于每一行都是不同的。它可以是3:0,1:2,3:3和这么多的组合。我怎么能做到呢?他想保持0.06的负数。谢谢你的建议。我怎么能在0.06中包含负号?嗨,非常感谢你的建议,我非常感激。我有稍微不同的s按如下方式拆分:假设我想在唯一的sprint中拆分字符串。我该怎么做。例如,我的字符串包含abcdf 0:2 dfrgh,我想在0:2拆分。(也就是说,我有两个字符串abcdf和dfrgh。但是,拆分器0:2对于每一行都是不同的。它可以是3:0、1:2、3:3和这么多的组合。我该怎么做呢?感谢您对这个问题的及时回答。非常感谢您的建议。谢谢天华。假设我想在独特的sprint拆分一个字符串。我该怎么做呢。例如,我的st环包含abcdf 0:2 dfrgh,我想在0:2拆分。(即,我有两个字符串abcdf和dfrgh。但是,拆分器0:2对于每一行都是不同的。它可以是3:0、1:2、3:3和如此多的组合。我怎么做?
df.Value.str.split('[-+]+',expand=True)
此拆分可以接受正则表达式模式进行查找并使用查找结果进行拆分。因此,您可以提取这些拆分器的常规模式。如果存在0:2 3:0 1:2 3:3,您可以使用类似于
[0-9]:[0-9]的模式
,它将匹配所有类型的拆分器,如
number:number
。谢谢。我会尝试尝试一下你对这个问题的快速回答。非常感谢天华的建议。假设我想在unique sprint拆分一个字符串。我该如何做。例如,我的字符串包含abcdf 0:2 dfrgh,我想在0:2拆分。(也就是说,我有两个字符串abcdf和dfrgh。但是,拆分器0:2对于每一行都是不同的。它可以是3:0、1:2、3:3和这么多的组合。我怎么做呢?
df.Value.str.split('[-+]+',expand=True)
此拆分可以接受正则表达式模式进行查找并使用查找结果进行拆分。因此,您可以提取这些拆分器的常规模式。如果有0:2 3:0 1:2 3:3,您可以使用类似
[0-9]:[0-9]
的模式,它将匹配所有类型的拆分器,如
number:number
。谢谢。我会尝试
import pandas as pd
df = pd.DataFrame()
df['Name'] = ['A','B','C']
df['Value'] = ['2+0.5','1+0.2','2-0.06']
df[['value1','value2']]=df.Value.str.split('[-+]+',expand=True)
contain_symbol = df.Value.str.contains('-',regex=False)
df.loc[contain_symbol,"value2"] = -df.loc[contain_symbol,"value2"].astype(float)