df = (df.groupby(['A-Party','IMEI'], as_index=False)
.agg(**{'First Date':('Date & Time', 'first'),
'Last Date': ('Date & Time', 'last')}))
df.insert(1,'Total IMEI', df.groupby('A-Party')['A-Party'].transform('size'))
print (df)
A-Party Total IMEI IMEI First Date Last Date
0 3022275 2 A 2021-05-01 7:20:05 2022-08-01 6:20:05
1 3022275 2 B 2021-03-02 9:20:05 2022-05-01 10:20:05
如果需要空格(不推荐,因为可能会将数字与字符串''混合使用):
df.loc[df.duplicated(['A-Party','Total IMEI']), ['A-Party','Total IMEI']] = ''
print (df)
A-Party Total IMEI IMEI First Date Last Date
0 3022275 2 A 2021-05-01 7:20:05 2022-08-01 6:20:05
1 B 2021-03-02 9:20:05 2022-05-01 10:20:05
如果需要MultiIndex:
df = (df.groupby(['A-Party','IMEI'], as_index=False)
.agg(**{'First Date':('Date & Time', 'first'),
'Last Date': ('Date & Time', 'last')}))
df.insert(1,'Total IMEI', df.groupby('A-Party')['A-Party'].transform('size'))
df = df.set_index(['A-Party','Total IMEI','IMEI'])
print (df)
First Date Last Date
A-Party Total IMEI IMEI
3022275 2 A 2021-05-01 7:20:05 2022-08-01 6:20:05
B 2021-03-02 9:20:05 2022-05-01 10:20:05
df = (df.groupby(['A-Party','IMEI'], as_index=False)
.agg(**{'Total IMEI':('IMEI', 'size'),
'First Date':('Date & Time', 'first'),
'Last Date': ('Date & Time', 'last')}))
print (df)
A-Party IMEI Total IMEI First Date Last Date
0 3022275 A 3 2021-05-01 7:20:05 2022-08-01 6:20:05
1 3022275 B 3 2021-03-02 9:20:05 2022-05-01 10:20:05
df = df.set_index(['A-Party','Total IMEI','IMEI'])
print (df)
First Date Last Date
A-Party Total IMEI IMEI
3022275 3 A 2021-05-01 7:20:05 2022-08-01 6:20:05
B 2021-03-02 9:20:05 2022-05-01 10:20:05
我只是手动形成每一列,然后创建DataFrame
使用带有^{} 和
first
和last
或min
和max
的名称聚合:如果需要空格(不推荐,因为可能会将数字与字符串
''
混合使用):如果需要
MultiIndex
:编辑:将^{} 添加到命名聚合:
编辑1:
相关问题 更多 >
编程相关推荐