0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pandasで行に特定の文字がいくつあるかをカウントして項目追加する方法

Last updated at Posted at 2020-08-25

他の記事を探してもなかなか行方向で特定文字列を集計するやり方を書いてある記事がなかったので、
試行錯誤した内容を記載します。

データの準備

データの準備

import pandas as pd

list = [['a', 'c', 'a', 'a'],
        ['b', 'a', 'b', 'b'],
        ['b', 'c', 'a', 'a'],
        ['c', 'a', 'b', 'b']]

df = pd.DataFrame(list, columns = ['first', 'second', 'third', 'forth'])
df

2020-08-25_21h17_29.png

今回はこのデータのを行向きの文字列abをカウントしてcountという列に集計結果を追記していきます。

転置させる

データの転置
# 転置する
df_T = df.T
df_T

2020-08-25_21h11_54.png

置換してカウントの準備

replaceはオブジェクトで複数文字を置換できるので、
カウントしたい文字列をTrueへ変換する。

カウントしたい文字の置換
# replaceでカウントしたい文字をTrueに変更
replacer = {'a': True, 'b': True}
df_T = df_T.replace(replacer)
df_T

2020-08-25_21h14_30.png

カウントさせる

カウントしたい文字の置換
(df_T[df_T.columns.tolist()] == True).sum()

2020-08-25_21h15_56.png

カウントさせた内容を元のデータの新しい項目に追加させる

上記の内容を元のデータフレームの新しい項目に追加させる

カウントさせたのも元のデータの項目に追加させる
df['count'] = (df_T[df_T.columns.tolist()] == True).sum()
df

2020-08-25_21h08_17.png

全体のコード

全コード
import pandas as pd

list = [['a', 'c', 'a', 'a'],
        ['b', 'a', 'c', 'b'],
        ['b', 'c', 'a', 'c'],
        ['c', 'a', 'b', 'b']]

df = pd.DataFrame(list, columns = ['first', 'second', 'third', 'forth'])

df_T = df.T
replacer = {'a': True, 'b': True}
df_T = df_T.replace(replacer)

df['count'] = (df_T[df_T.columns.tolist()] == True).sum()

もっと良い方法があれば追記していきます。

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?