Pandas Groupby를 사용하여 여러 행의 문자열 연결
데이터 프레임으로 작업할 때 여러 행의 문자열을 통합해야 하는 상황이 있을 수 있습니다. 특정 기준에 따라 그룹화하는 동안 Pandas는 groupby 및 변환 기능을 통해 이에 대한 편리한 솔루션을 제공합니다.
문제 설명
'이름', '텍스트' 및 '월' 열이 있는 데이터 프레임이 제공됩니다. ,' 목표는 '이름'과 '월'의 고유한 각 조합에 대해 '텍스트' 열의 문자열을 연결하는 것입니다. 원하는 출력은 고유한 '이름' 및 '월' 조합과 연결된 '텍스트' 값이 있는 데이터 프레임입니다.
해결책
이를 달성하려면 다음을 활용할 수 있습니다. 다음 단계:
다음은 예입니다. 코드:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!