7

pandas DataFrame 列の括弧の間に表示されるテキストを別の列にコピーしようとしています。それに応じて文字列を解析するために、このソリューションに出くわしました:正規表現を括弧の間にテキストを返す

結果を要素ごとに新しい列の同じ行に割り当てたいと思います。ただし、これは pandas シリーズに直接引き継がれません。map/apply/lambda が進むべき道のようです。このコードにたどり着きましたが、無効な構文エラーが発生しました。

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

明らかに、私はまだ十分に流暢ではありません - 助けていただければ幸いです。

4

1 に答える 1

16

そこに提案されているのと同じ方法で適用を使用することができます:

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

または、シリーズ文字列メソッドのいずれかを使用できます。たとえば、次のようになります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 に答える