2017-12-02 2 views
1

팬더 데이터 프레임을 리샘플링하고 다른 기능을 다른 열에 적용하고 싶습니다. 문제는 문자열로 열을 올바르게 처리 할 수 ​​없다는 것입니다. 문자열을 "-"와 같은 구분 기호로 병합하는 함수를 적용하고 싶습니다. 이것은 데이터 예제입니다.resample 팬더 데이터 프레임 및 열 병합

import pandas as pd 
import numpy as np 
idx = pd.date_range('2017-01-31', '2017-02-03') 
data=list([[1,10,"ok"],[2,20,"merge"],[3,30,"us"]]) 
dates=pd.DatetimeIndex(['2017-01-31','2017-02-03','2017-02-03']) 
d=pd.DataFrame(data, index=,columns=list('ABC')) 

      A B   C 
2017-01-31 1 10   ok 
2017-02-03 2 20  merge 
2017-02-03 3 30   us 

합계 및 평균 집계가 작동하는 숫자 열 A와 B를 다시 샘플링합니다. 열 C하지만 합계와 작품의 종류 (하지만 그것은 무언가가 실패 할 수도 의미 두 번째 장소에 배치 도착).

d.resample('D').agg({'A': sum, 'B': np.mean, 'C': sum}) 

       A    C  B 
2017-01-31 1.0    a 10.0 
2017-02-01 NaN    0 NaN 
2017-02-02 NaN    0 NaN 
2017-02-03 5.0  merge us 25.0 

나는 이것을 좀하고 싶습니다 :

나는 다른 방법으로하지만 성공하지 람다를 사용하여 시도
... 
2017-02-03 5.0  merge - us 25.0 

(도시하지 않음).

두 번째 관련 질문을 할 수 있습니다.이 문제에 대한 후 처리는 할 수 있지만 누락 된 셀을 다른 열에서 0 또는 ""으로 채우는 방법은 무엇입니까? 열 'C'에 대한

+0

IIUC을해야합니다, 당신은 누락 된 값을 채우기 위해 df.fillna()를 사용할 수 있습니다. https://pandas.pydata.org/pandas-docs/stable/missing_data.html – Evan

+0

예, 가능하면 다른 대체물 (예 : 0, 없음, "")을 다른 열에 적용하십시오. 더 복잡한 방법이 있다면 궁금합니다. 예제 – aless80

답변

1

귀하의 AGG 함수는 join

d.resample('D').agg({'A': sum, 'B': np.mean, 'C': ' - '.join}) 

       A  B   C 
2017-01-31 1.0 10.0   ok 
2017-02-01 NaN NaN    
2017-02-02 NaN NaN    
2017-02-03 5.0 25.0 merge - us 
+0

아, 함수에 대한 "입력"은 iterables이고 iterables를 입력으로 사용하는 함수를 사용할 수 있습니다. 내가 더 매끄러운 작업을 할 필요가 있다면 iterable을 취하는 함수를 만들 수 있습니다. 이상하게도, 내 콘솔에서 두 번째로 열 C가 계속 표시됩니다. – aless80

관련 문제