> 백엔드 개발 > 파이썬 튜토리얼 > Groupby를 사용하여 Pandas의 여러 행에서 문자열을 연결하는 방법은 무엇입니까?

Groupby를 사용하여 Pandas의 여러 행에서 문자열을 연결하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-15 12:17:14
원래의
529명이 탐색했습니다.

How to Concatenate Strings from Multiple Rows in Pandas Using Groupby?

Pandas Groupby를 사용하여 여러 행의 문자열 연결

데이터 프레임으로 작업할 때 여러 행의 문자열을 통합해야 하는 상황이 있을 수 있습니다. 특정 기준에 따라 그룹화하는 동안 Pandas는 groupby 및 변환 기능을 통해 이에 대한 편리한 솔루션을 제공합니다.

문제 설명

'이름', '텍스트' 및 '월' 열이 있는 데이터 프레임이 제공됩니다. ,' 목표는 '이름'과 '월'의 고유한 각 조합에 대해 '텍스트' 열의 문자열을 연결하는 것입니다. 원하는 출력은 고유한 '이름' 및 '월' 조합과 연결된 '텍스트' 값이 있는 데이터 프레임입니다.

해결책

이를 달성하려면 다음을 활용할 수 있습니다. 다음 단계:

  1. groupby()를 사용하여 '이름'과 '월'별로 데이터프레임을 그룹화합니다. 함수.
  2. transform() 함수를 사용하여 각 그룹의 '텍스트' 항목을 결합하는 람다 표현식을 적용합니다.
  3. 중복 행을 제거하려면 다음을 사용하여 결과 데이터 프레임에서 중복 항목을 삭제합니다. drop_duplicates() 함수.

다음은 예입니다. 코드:

import pandas as pd
from io import StringIO

data = StringIO("""
"name1","hej","2014-11-01"
"name1","du","2014-11-02"
"name1","aj","2014-12-01"
"name1","oj","2014-12-02"
"name2","fin","2014-11-01"
"name2","katt","2014-11-02"
"name2","mycket","2014-12-01"
"name2","lite","2014-12-01"
""")

# load string as stream into dataframe
df = pd.read_csv(data, header=0, names=["name", "text", "date"], parse_dates=[2])

# add column with month
df["month"] = df["date"].apply(lambda x: x.month)

df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x))
df[['name','text','month']].drop_duplicates()
로그인 후 복사

위 코드는 원하는 결과가 포함된 데이터 프레임을 생성합니다.

    name         text  month
0  name1       hej,du     11
2  name1        aj,oj     12
4  name2     fin,katt     11
6  name2  mycket,lite     12
로그인 후 복사

대체 솔루션

transform(을 사용하는 대신( ), Apply()를 사용한 다음 Reset_index()를 활용하여 동일한 결과를 얻을 수도 있습니다. 업데이트된 코드는 다음과 같습니다.

df.groupby(['name','month'])['text'].apply(','.join).reset_index()
로그인 후 복사

이 단순화된 버전은 람다 표현식을 제거하고 보다 간결한 솔루션을 제공합니다.

위 내용은 Groupby를 사용하여 Pandas의 여러 행에서 문자열을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿