이전에 뉴스기사를 크롤링한 후 내용이 같은 기사에 대해 Sentiment dictionary의 값들을 합쳐야 했다.
그래서 dictionary list에서 key에 따른 value들을 더하는 함수를 알아보았다.
우선 dictionary list를 하나 만든다.
dic1 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic2 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic3 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic4 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 3, '추천해요' : 1}
이 dictionay들에서 첫번째 dictionary dic1을 데이터프레임으로 만든다.
그리고 append()함수를 통해 dic2, dic3, dic4 를 데이터프레임에 행으로 추가한다.
주의할 점은 append()함수에 dictionary형태로 전달할 경우 ignore_index=True를 설정해줘야 한다.
df_dic = pd.DataFrame({'sentiment' : [dic1]})
df_dic = df_dic.append({'sentiment' : dic2}, ignore_index=True)
df_dic = df_dic.append({'sentiment' : dic3}, ignore_index=True)
df_dic = df_dic.append({'sentiment' : dic4}, ignore_index=True)
df_dic
dictionary list에서 key에 따른 value들을 더하는 sum_sentiment 함수이다.
from operator import itemgetter
def sum_sentiment(x):
init_dict = list(x)
result = {}
for d in init_dict:
for k in d.keys():
result[k] = result.get(k, 0) + d[k]
return result
sentiment column에 대해 sum_sentiment를 적용한 후 결과를 확인하면 같은 key에 따라 value들이 더해진 것을 확인할 수 있다.
dic_sum = df_dic.agg({'sentiment' : lambda x : sum_sentiment(x)})
dic_sum
참고 :
https://www.delftstack.com/ko/howto/python-pandas/how-to-add-one-row-to-pandas-dataframe/
https://www.geeksforgeeks.org/python-sum-list-of-dictionaries-with-same-key/
'Python' 카테고리의 다른 글
[python] 데이터프레임 내의 값이 2차원리스트 일 때 2차원 리스트끼리 합치기 (0) | 2021.10.12 |
---|---|
[python] 여러개의 데이터프레임 합치기 (concat multiple dataframes in Python) (1) | 2021.10.07 |
[python] 문자열 공백 제거 replace 함수 사용하기 (0) | 2021.10.05 |
[python] 다음 뉴스 크롤링 (python crawling) (0) | 2021.09.12 |
[python] 파이썬 딕셔너리 안에서 특정 키만 가져오기 (0) | 2021.09.12 |
댓글