将pandas DataFrame列中括号之间的文本复制到另一列

Ste*_*fan 3 python string dataframe pandas

我试图将pandas DataFrame列中括号中出现的文本复制到另一列.我遇到过这个解决方案来解析字符串:正则表达式在括号之间返回文本

我想将结果逐元素分配给新列中的同一行.但是,这并没有直接延续到熊猫系列.我似乎map/apply/lambda似乎是要走的路.我已经到达这段代码,但是语法错误无效.

dataSources.dataUnits = dataSources.dataDescription.map(str.find("(")+1:str.find(")"))
Run Code Online (Sandbox Code Playgroud)

显然,我还不够流利 - 非常感谢.

And*_*den 7

你可以只用用同样的方法提出的申请:

In [11]: s = pd.Series(['hi(pandas)there'])

In [12]: s
Out[12]:
0    hi(pandas)there
dtype: object

In [13]: s.apply(lambda st: st[st.find("(")+1:st.find(")")])
Out[13]:
0    pandas
dtype: object
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Series字符串方法之一,例如replace:

In [14]: s.str.replace(r'[^(]*\(|\)[^)]*', '')
Out[14]:
0    pandas
dtype: object
Run Code Online (Sandbox Code Playgroud)

抛弃所有的东西之前()包容后的所有东西.

从0.13开始,您可以使用提取方法:

In [15]: s.str.extract('.*\((.*)\).*')
Out[15]: 
0    pandas
dtype: object
Run Code Online (Sandbox Code Playgroud)