pandas에서 행에 특정 문자가 몇 개 있는지 계산하여 항목을 추가하는 방법

8066 단어 pandasPython3
다른 기사를 찾아도 좀처럼 행 방향으로 특정 문자열을 집계하는 방법을 쓰고 있는 기사가 없었기 때문에,
시행착오한 내용을 기재합니다.

데이터 준비



데이터 준비

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



이번에는 이 데이터의 행향 문자열 ab 를 카운트하여 count 라는 열에 집계 결과를 추기해 갑니다.

전치하다



데이터 전치
# 転置する
df_T = df.T
df_T



교체하여 카운트 준비



replace 는 오브젝트로 복수 문자를 치환할 수 있으므로,
카운트하고 싶은 문자열을 True로 변환합니다.

계산하고 싶은 문자 바꾸기
# replaceでカウントしたい文字をTrueに変更
replacer = {'a': True, 'b': True}
df_T = df_T.replace(replacer)
df_T



카운트



계산하고 싶은 문자 바꾸기
(df_T[df_T.columns.tolist()] == True).sum()



계산 된 내용을 원래 데이터의 새 항목에 추가



위 내용을 원래 데이터 프레임의 새 항목에 추가

카운트 한 것도 원래 데이터의 항목에 추가시킨다
df['count'] = (df_T[df_T.columns.tolist()] == True).sum()
df



전체 코드



모든 코드
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()

더 좋은 방법이 있으면 추기해 갑니다.

좋은 웹페이지 즐겨찾기