我正在使用具有此结构的数据框
id,date,id_client,optionin,optionout
1,09/01/2017,123456,11,12
2,09/01/2017,123456,12,14
3,09/02/2017,1111111,85,45
4,09/02/2017,1111111,45,35
5,09/02/2017,1111111,35,58
6,09/01/2017,528585,1,2
7,09/01/2017,548123,37,12
8,09/01/2017,123588,117,512
9,09/01/2017,981358,116,152
我想删除同一客户端上同一日期的重复条目。 我只想要第一个选项的数据,同一行中的最后一个选项,以及一个id为optionout的新列
喜欢这个
id,id_end,date,id_client,optionin,optionout
1,2,09/01/2017,123456,11,14
3,5,09/02/2017,1111111,85,58
6,6,09/01/2017,528585,1,2
7,7,09/01/2017,548123,37,12
8,8,09/01/2017,123588,117,512
9,9,09/01/2017,981358,116,152
我该怎么做?有可能吗?
答案 0 :(得分:1)
您可以使用agg()
df.groupby(['id_client', 'date']).agg({'optionin': 'first','optionout': 'last'}).reset_index()
id_client date optionin optionout
0 123456 09/01/2017 11 14
1 123588 09/01/2017 117 512
2 528585 09/01/2017 1 2
3 548123 09/01/2017 37 12
4 981358 09/01/2017 116 152
5 1111111 09/02/2017 85 58
对于id部分,
df1 = df.groupby(['id_client', 'date']).agg({'optionin': 'first', 'optionout': 'last', 'id': ['first', 'last']}).reset_index()
df1.columns = df1.columns.map('_'.join)
id_client_ date_ optionin_first optionout_last id_first id_last
0 123456 09/01/2017 11 14 1 2
1 123588 09/01/2017 117 512 8 8
2 528585 09/01/2017 1 2 6 6
3 548123 09/01/2017 37 12 7 7
4 981358 09/01/2017 116 152 9 9
5 1111111 09/02/2017 85 58 3 5