1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonコードで”for”を使わない書き方

Posted at

ちょこっと業務を簡略化したい

 この記事では、ちょこっと効率化させたいことをプログラミングやツールをつかって解決していきます
ちょこっと削減した時間を、もっと人生楽しくなることに使いましょう!

本日のお題ちょっと変わって

✨コードを効率化✨

forを使わず、1行で単語に句読点を打つ方法
外国語勉強の単語練習や法律文書や契約書等誤字がないか確認する時に使えます

python
df['日本語'].apply(lambda x: "".join(str(x).split()) if not pd.isna(x) else "").tolist()

-- output

text
こんにちは、世界、おはよう

-- input
データフレームになっている

徹底解説🔍

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リソースを使わない場面でも高速なデータ変換が可能となります。大量の文字列データを扱うシステムや、効率的なデータ前処理が求められるビジネス環境で非常に有用です

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?