ちょこっと業務を簡略化したい
この記事では、ちょこっと効率化させたいことをプログラミングやツールをつかって解決していきます
ちょこっと削減した時間を、もっと人生楽しくなることに使いましょう!
本日のお題ちょっと変わって
✨コードを効率化✨
forを使わず、1行で単語に句読点を打つ方法
外国語勉強の単語練習や法律文書や契約書等誤字がないか確認する時に使えます
python
df['日本語'].apply(lambda x: "、".join(str(x).split()) if not pd.isna(x) else "").tolist()
-- output
text
こんにちは、世界、おはよう
徹底解説🔍
python
df['日本語'].apply(lambda x: "、".join(str(x).split()) if not pd.isna(x) else "").tolist()
1. df['日本語']
-
df
は Pandas のデータフレーム。 -
df['日本語']
は「日本語」という列を選択する方法。
※ 列名が日本語であっても問題なく利用できます。
2. .apply(lambda x: ...)
-
apply()
メソッドは、シリーズ(df['日本語']
)の各要素に対して任意の関数を適用します。 -
lambda x: ...
は匿名関数(ラムダ関数)で、シリーズの各要素x
に対して次の処理を行います。
3. "、".join(str(x).split())
処理の内容
-
str(x)
: 要素x
を文字列に変換します。 -
.split()
: 空白(スペース)で文字列を分割します。- 例)
"こんにちは 世界"
→["こんにちは", "世界"]
- 例)
-
"、".join(...)
: 分割された単語を「、」で結合します。- 例)
["こんにちは", "世界"]
→"こんにちは、世界"
- 例)
4. if not pd.isna(x) else ""
-
pd.isna(x)
: 要素x
が NaN かどうかを判定します。 - NaN の場合は空文字
""
を返します。 - そうでなければ前述の結合処理(
"、".join(...)
)が行われます。
5. .tolist()
- シリーズの要素をリストに変換します。
- 例)
["こんにちは、世界", "おはよう"]
- 例)
6. all_chinese_text = "、".join(chinese_strings)
-
chinese_strings
リストの各要素をさらに「、」で結合します。- 例)
["こんにちは、世界", "おはよう"]
→"こんにちは、世界、おはよう"
- 例)
7. print(all_chinese_text)
- 最終結果を出力します。
- 出力例:
こんにちは、世界、おはよう
- 出力例:
最後に
このコードはシンプルな処理ですが、特に大量データの処理において for 文を使った逐次処理よりも効率的です。Pandasのベクトル化された操作を活用することで、GPUリソースを使わない場面でも高速なデータ変換が可能となります。大量の文字列データを扱うシステムや、効率的なデータ前処理が求められるビジネス環境で非常に有用です