回答編集履歴

3

誤字修正

2021/01/20 22:37

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- いっぽう、reに対して広報互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
5
+ いっぽう、reに対して後方互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
6
6
 
7
7
 
8
8
 

2

対策を追加

2021/01/20 22:37

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -1 +1,61 @@
1
- pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。
1
+ pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。提示されたエラーはそれが原因です。
2
+
3
+
4
+
5
+ いっぽう、reに対して広報互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
6
+
7
+
8
+
9
+ [regex · PyPI](https://pypi.org/project/regex/)
10
+
11
+
12
+
13
+ > This regex implementation is backwards-compatible with the standard ‘re’ module, but offers additional functionality.
14
+
15
+
16
+
17
+ そこで、`replace`を使う代わりに、regexで同様の処理を行なう関数`regex.subn`を`apply`で呼び出すようにすれば、Unicodeプロパティを使った置換処理を行なえます。
18
+
19
+
20
+
21
+ ```Python
22
+
23
+ import pandas as pd
24
+
25
+ import io
26
+
27
+ import regex
28
+
29
+
30
+
31
+ txt = """
32
+
33
+ BANGO
34
+
35
+ これはregexをpandasに適用するテストです。
36
+
37
+ """
38
+
39
+
40
+
41
+ df = pd.read_csv(io.StringIO(txt))
42
+
43
+ # print(df)
44
+
45
+
46
+
47
+ print(df['BANGO'].apply(lambda x: regex.subn(
48
+
49
+ r'(?:\p{Hiragana}|\p{Script=Han})+', '', x)[0]))
50
+
51
+ ```
52
+
53
+
54
+
55
+ ```result
56
+
57
+ 0 regexpandasテスト。
58
+
59
+ Name: BANGO, dtype: object
60
+
61
+ ```

1

補足を追加

2021/01/19 11:39

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -1 +1 @@
1
- Python標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。
1
+ pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。