Python Pandas在数据帧中重复,为重复行的每个组合获取信息

时间:2017-09-01 19:49:05

标签: python-3.x pandas

我正在使用具有此结构的数据框

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

我该怎么做?有可能吗?

1 个答案:

答案 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