2014-04-22 57 views
8

Tôi có một dataframe trông như thế này:Python Pandas thêm các cột giả đến dataframe gốc

             JOINED_CO GENDER    EXEC_FULLNAME  GVKEY  YEAR  CONAME  BECAMECEO  REJOIN   LEFTOFC    LEFTCO  RELEFT    REASON  PAGE 
CO_PER_ROL                                                                                                                                      
5622              NaN   MALE   Ira A. Eichner   1004  1992  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1993  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1994  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1995  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1996  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1997  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5622              NaN   MALE   Ira A. Eichner   1004  1998  AAR CORP   19550101     NaN  19961001  19990531     NaN  RESIGNED    79 
5623              NaN   MALE  David P. Storch   1004  1992  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 
5623              NaN   MALE  David P. Storch   1004  1993  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 
5623              NaN   MALE  David P. Storch   1004  1994  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 
5623              NaN   MALE  David P. Storch   1004  1995  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 
5623              NaN   MALE  David P. Storch   1004  1996  AAR CORP   19961009     NaN       NaN       NaN     NaN       NaN    57 

Đối với giá trị NĂM, tôi muốn thêm cột năm (1993,1994 ..., 2009) vào khung dữ liệu ban đầu, Nếu giá trị trong YEAR là 1992, thì giá trị trong cột 1992 phải là 1 nếu không 0.

Tôi đã sử dụng vòng lặp rất ngu ngốc, nhưng dường như chạy mãi khi tôi có tập dữ liệu lớn . Có ai giúp tôi với nó không, cảm ơn rất nhiều!

Trả lời

20
In [77]: df = pd.concat([df, pd.get_dummies(df['YEAR'])], axis=1); df 
Out[77]: 
     JOINED_CO GENDER EXEC_FULLNAME GVKEY YEAR CONAME BECAMECEO \ 
5622  NaN MALE Ira A. Eichner 1004 1992 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1993 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1994 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1995 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1996 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1997 AAR CORP 19550101 
5622  NaN MALE Ira A. Eichner 1004 1998 AAR CORP 19550101 
5623  NaN MALE David P. Storch 1004 1992 AAR CORP 19961009 
5623  NaN MALE David P. Storch 1004 1993 AAR CORP 19961009 
5623  NaN MALE David P. Storch 1004 1994 AAR CORP 19961009 
5623  NaN MALE David P. Storch 1004 1995 AAR CORP 19961009 
5623  NaN MALE David P. Storch 1004 1996 AAR CORP 19961009 

     REJOIN LEFTOFC LEFTCO RELEFT REASON PAGE 1992 1993 1994 \ 
5622  NaN 19961001 19990531  NaN RESIGNED 79  1  0  0 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  1  0 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  0  1 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  0  0 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  0  0 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  0  0 
5622  NaN 19961001 19990531  NaN RESIGNED 79  0  0  0 
5623  NaN  NaN  NaN  NaN  NaN 57  1  0  0 
5623  NaN  NaN  NaN  NaN  NaN 57  0  1  0 
5623  NaN  NaN  NaN  NaN  NaN 57  0  0  1 
5623  NaN  NaN  NaN  NaN  NaN 57  0  0  0 
5623  NaN  NaN  NaN  NaN  NaN 57  0  0  0 

     1995 1996 1997 1998 
5622  0  0  0  0 
5622  0  0  0  0 
5622  0  0  0  0 
5622  1  0  0  0 
5622  0  1  0  0 
5622  0  0  1  0 
5622  0  0  0  1 
5623  0  0  0  0 
5623  0  0  0  0 
5623  0  0  0  0 
5623  1  0  0  0 
5623  0  1  0  0 

Nếu bạn muốn xóa cột YEAR, thì bạn có thể theo dõi điều này với del df['YEAR']. Hoặc, thả YEAR cột từ df trước khi gọi concat:

df = pd.concat([df.drop('YEAR', axis=1), pd.get_dummies(df['YEAR'])], axis=1) 
+0

gì does'in [77] 'nghĩa là gì? – guo

+1

@ guo: Đó là dấu nhắc shell tương tác của [IPython] (https://ipython.org/). Nó đánh số đầu vào. – unutbu

Các vấn đề liên quan