熊猫表改造。交叉表

时间:2017-10-27 00:11:33

标签: python pandas

如何转换此表

id   date_create   date_status_change   status_old  status_new
 1    01.01.2017     02.01.2017              new      enrolled
 1    01.01.2017     05.03.2017         enrolled          paid
 1    01.01.2017     21.10.2017             paid        closed
 2    02.02.2017     13.04.2017              new      enrolled
 2    02.02.2017     14.04.2017         enrolled        closed
 3    03.03.2017     04.03.2017              new       visited
 3    03.03.2017     05.03.2017          visited      enrolled
 3    03.03.2017     01.05.2017         enrolled      accepted
 3    03.03.2017     11.06.2017         accepted          paid
 3    03.03.2017     25.07.2017             paid        closed

到此

id  date_create     new       visited     enrolled     accepted     paid    closed
 1   01.01.2017  01.01.2017     NaN      02.01.2017      NaN     05.03.2017 21.10.2017
 2   02.02.2017  02.02.2017     NaN      13.04.2017      NaN         NaN    14.04.2017
 3   03.03.2017  03.03.2017  04.03.2017  05.03.2017   01.05.2017 11.06.2017 25.07.2017

无需迭代列并检查是否存在状态?我尝试使用pd.crosstab(df['contact_id'], [df['status_old'], df['status_new']]),但它没有抓住日期

1 个答案:

答案 0 :(得分:1)

尝试

df.set_index(['id','date_create','status_new']).date_status_change.unstack()

    status_new  accepted    closed      enrolled    paid        visited
id  date_create                 
1   01.01.2017  None        21.10.2017  02.01.2017  05.03.2017  None
2   02.02.2017  None        14.04.2017  13.04.2017  None        None
3   03.03.2017  01.05.2017  25.07.2017  05.03.2017  11.06.2017  04.03.2017