파이썬 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
댓글 입력