파이썬 pandas dataframe 관련 질문

조회수 855회
colum 1, colum2
a,b,c     30
b,c,f     40
a,g,z     50
.
.
.

이런식으로 되어 있는 dataframe에서 a에 해당되는 column2의 값을 합한 column4를 구성하고 싶습니다.

column3, column4
a        80
b        70
c        70
f        40
g        50
z        50

위와 같은 결과를 얻고 싶은데 관련한 numpy, pandas의 method가 있을 지 궁금합니다.

2 답변

  • df = pd.DataFrame({'col1': ['a, b, c', 'b, c, f', 'a, g, z'],
                       'col2': [30, 40, 50]})
    df1 = df['col1'].str.split(', ', expand=True)
    df1.rename({i: 'new_col%s' % i for i in range(df1.shape[1])}, axis=1, inplace=True)
    df1['value'] = df['col2']
    df1 = df1.melt(['value'], ['new_col%s' % i for i in range(3)], 'col', 'key')
    df1.drop(['col'], axis=1, inplace=True)
    df1.groupby('key').sum()
    

    질문이 오래되서 이걸 보실지 모르겠네요.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • pandas를 사용하면 이렇게 하시면 됩니다.

    >>> import pandas as pd
    >>> d = {'col1': [1, 2], 'col2': [3, 4], 'col3': [5,6]}
    >>> df = pd.DataFrame(data=d)
    >>> df
       col1  col2  col3
    0     1     3     5
    1     2     4     6
    >>> df['col4'] = df[['col1','col2']].sum(axis=1)
    >>> df
       col1  col2  col3  col4
    0     1     3     5     4
    1     2     4     6     6
    
    

    df.sum(axis=1)이렇게하시면 모두의 의 더하기가 됩니다.

    • co1, index0에 comma로 구분된 여러개의 자료가 있을 시에 그것을 구분하는 방법도 알 수 있을까요>? Kwansu Kim 2018.7.26 11:43
    • df['col5'] = df[['col1']].apply(lambda x: x[0].split(',')[0], axis=1) 이런식으로 적용해 볼 수 있습니다. 유연수 2018.7.26 12:13
    • 질문에 있는 col1에 있는 a,b,c 항목을 col3처럼 row로 나눔과 동시에 col4에는 col3에 해당하는 값이 있는 col2값을 다 더하는 dataframe을 만들고 싶습니다. 설명이 장황하지만 다시 한 번 보시고 도움 부탁드립니다. Kwansu Kim 2018.7.26 14:10
    • 질문을 잘 못 이해 했었네요. 먼가 dataframe기능 중에 심플하게 해결할 수 있을 것 같은데요. 혹은, 단순히 파이썬을 이용하여 계산해서 다시 dataframe 만들면 안되겠죠? 유연수 2018.7.26 16:54

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)