我想 reshape pandas 数据框,
我有这种格式的 csv 文件
#Result;ID;Date;Events;type
12;1240422;10/01/2017 10:10;1;Item1
2;1241468;12/01/2017 09:15;0;Item1
7.8;1241469;12/01/2017 09:40;0;Item1
151;1241470;12/01/2017 10:00;1;Item1
0;1241471;12/01/2017 10:20;0;Item1
3;1241472;12/01/2017 10:40;0;Item1
0;1241473;12/01/2017 11:10;0;Item1
164;1240422;10/01/2017 10:10;1;Item2
162;1241468;12/01/2017 09:15;0;Item2
161;1241469;12/01/2017 09:40;0;Item2
161;1241470;12/01/2017 10:00;1;Item2
162;1241471;12/01/2017 10:20;0;Item2
349;1241472;12/01/2017 10:40;0;Item2
162;1241473;12/01/2017 11:10;0;Item2
7.8;1240422;10/01/2017 10:10;1;Item3
7.8;1241468;12/01/2017 09:15;0;Item3
7.8;1241469;12/01/2017 09:40;0;Item3
7.8;1241470;12/01/2017 10:00;1;Item3
7.9;1241471;12/01/2017 10:20;0;Item3
7.7;1241472;12/01/2017 10:40;0;Item3
7.8;1241473;12/01/2017 11:10;0;Item3
0;1240422;10/01/2017 10:10;1;Item4
0;1241468;12/01/2017 09:15;0;Item4
0;1241469;12/01/2017 09:40;0;Item4
0;1241470;12/01/2017 10:00;1;Item4
0;1241471;12/01/2017 10:20;0;Item4
0.17;1241472;12/01/2017 10:40;0;Item4
0;1241473;12/01/2017 11:10;0;Item4
我需要的是如下所示的内容(它们基本上按 id 分组,如果其中一个事件是 1 那么它将是 1)
Item1;Item2;Item3;Item4;Events;Date;ID
12;164;7.8;0;1;10/01/2017 10:10;1240422
2;162;7.8;0;0;12/01/2017 09:15;1241468
7.8;161;7.8;0;0;12/01/2017 09:40;1241469
151;161;7.8;0;1;12/01/2017 10:00;1241470
0;162;7.9;0;0;12/01/2017 10:20;1241471
3;349;7.7;0.17;0;12/01/2017 10:40;1241472
0;162;7.8;0;0;12/01/2017 11:10;1241473
有什么建议吗?谢谢
让我们使用数据框 reshape :
import pandas as pd
from io import StringIO
csvtxt = StringIO("""Result;ID;Date;Events;type
12;1240422;10/01/2017 10:10;1;Item1
2;1241468;12/01/2017 09:15;0;Item1
7.8;1241469;12/01/2017 09:40;0;Item1
151;1241470;12/01/2017 10:00;1;Item1
0;1241471;12/01/2017 10:20;0;Item1
3;1241472;12/01/2017 10:40;0;Item1
0;1241473;12/01/2017 11:10;0;Item1
164;1240422;10/01/2017 10:10;1;Item2
162;1241468;12/01/2017 09:15;0;Item2
161;1241469;12/01/2017 09:40;0;Item2
161;1241470;12/01/2017 10:00;1;Item2
162;1241471;12/01/2017 10:20;0;Item2
349;1241472;12/01/2017 10:40;0;Item2
162;1241473;12/01/2017 11:10;0;Item2
7.8;1240422;10/01/2017 10:10;1;Item3
7.8;1241468;12/01/2017 09:15;0;Item3
7.8;1241469;12/01/2017 09:40;0;Item3
7.8;1241470;12/01/2017 10:00;1;Item3
7.9;1241471;12/01/2017 10:20;0;Item3
7.7;1241472;12/01/2017 10:40;0;Item3
7.8;1241473;12/01/2017 11:10;0;Item3
0;1240422;10/01/2017 10:10;1;Item4
0;1241468;12/01/2017 09:15;0;Item4
0;1241469;12/01/2017 09:40;0;Item4
0;1241470;12/01/2017 10:00;1;Item4
0;1241471;12/01/2017 10:20;0;Item4
0.17;1241472;12/01/2017 10:40;0;Item4
0;1241473;12/01/2017 11:10;0;Item4""")
df = pd.read_csv(csvtxt, sep=';')
df_out = df.set_index(['ID','Date','Events','type'])['Result'].unstack().reset_index()
df_out.to_csv('out.csv', sep=';', index=False)
!type out.csv
“out.csv”文件中的输出:
ID;Date;Events;Item1;Item2;Item3;Item4
1240422;10/01/2017 10:10;1;12.0;164.0;7.8;0.0
1241468;12/01/2017 09:15;0;2.0;162.0;7.8;0.0
1241469;12/01/2017 09:40;0;7.8;161.0;7.8;0.0
1241470;12/01/2017 10:00;1;151.0;161.0;7.8;0.0
1241471;12/01/2017 10:20;0;0.0;162.0;7.9;0.0
1241472;12/01/2017 10:40;0;3.0;349.0;7.7;0.17
1241473;12/01/2017 11:10;0;0.0;162.0;7.8;0.0
我是一名优秀的程序员,十分优秀!