2017-05-18 1 views
1

다음과 같이 많은 수의 데이터 프레임 (df_m)이 있습니다. 데이터 프레임의 date_m 열의 연도 (2010-2017)에 대한 월별 발생 수를 플로팅합니다. year_m의 연도 범위는 2010-2017 년 이후입니다.pandas : 달의 발생 횟수를 계산합니다.

db num   date_a  date_m date_c zip_b zip_a 
0 old HKK10032 2010-07-14 2010-07-26 NaT NaN NaN 
1 old HKK10109 2011-07-14 2011-09-15 NaT NaN NaN 
2 old HNN10167 2012-07-15 2012-08-09 NaT 177-003 NaN 
3 old HKK10190 2013-07-15 2013-09-02 NaT NaN NaN 
4 old HKK10251 2014-07-16 2014-05-02 NaT NaN NaN 
5 old HKK10253 2015-07-16 2015-05-01 NaT NaN NaN 
6 old HNN10275 2017-07-16 2017-07-18 2010-07-18 1070062 NaN 
7 old HKK10282 2017-07-16 2017-08-16 NaT NaN NaN 
............................................................ 

첫 번째로, 나는 매월 (2010-2017) 매월 (1-12) 월 발생을 추상화합니다. 그러나 오류가 내 코드에있다 :

lst_all = [] 
for i in range(2010, 2018): 
    lst_num = [sum(df_m.date_move.dt.month == j & df_m.date_move.dt.year == i) for j in range(1, 13)] 
    lst_all.append(lst_num) 
print lst_all 
+0

오류가 무엇입니까? – IanS

답변

1

당신은 () 조건에 추가해야합니다

lst_all = [] 
for i in range(2010, 2018): 
    lst_num = [((df_m.date_m.dt.month == j) & (df_m.date_m.dt.year == i)).sum() for j in range(1, 13)] 
    lst_all.append(lst_num) 

그런 다음 얻을 :

df1 = pd.DataFrame(lst_all, index=range(2010, 2018), columns=range(1, 13)) 
print (df1) 
     1 2 3 4 5 6 7 8 9 10 11 12 
2010 0 0 0 0 0 0 1 0 0 0 0 0 
2011 0 0 0 0 0 0 0 0 1 0 0 0 
2012 0 0 0 0 0 0 0 1 0 0 0 0 
2013 0 0 0 0 0 0 0 0 1 0 0 0 
2014 0 0 0 0 1 0 0 0 0 0 0 0 
2015 0 0 0 0 1 0 0 0 0 0 0 0 
2016 0 0 0 0 0 0 0 0 0 0 0 0 
2017 0 0 0 0 0 0 1 1 0 0 0 0 
관련 문제