7

我正在尝试将出现在 pandas DataFrame 列中括号之间的文本复制到另一列中。我遇到了这个解决方案来相应地解析字符串:Regular expression to return text between parentheses

我想将结果逐个元素分配给新列中的同一行。但是,这不会直接延续到 pandas 系列。我似乎 map/apply/lambda 似乎是要走的路。我已经到达了这段代码,但是得到了一个无效的语法错误。

dataSources.dataUnits = dataSources.dataDescription.map(str.find("(")+1:str.find(")"))

显然,我在那里还不够流利 - 非常感谢帮助。

4

1 回答 1

16

您可以使用此处建议的相同方法使用 apply :

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

或者,也许您可​​以使用其中一种 Series 字符串方法,例如replace

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

扔掉 inclusive 之前的(所有东西和 inclusive 之后的所有东西)

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

In [15]: s.str.extract('.*\((.*)\).*')
Out[15]: 
0    pandas
dtype: object
于 2013-05-30T17:37:35.760 回答