我有一个这样的数据框架:
日期,IMEI 3022275
2022-08-01 6:20:05 2022-05-01 10:20:05
使用GroupBy.agg
、first
和last
或min
和max
的名称聚合:
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
编辑:添加GroupBy.size
到命名聚合:
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
EDIT1:
df = (df.assign(dates = df['Date & Time'].dt.date)
.groupby(['A-Party','IMEI'], as_index=False)
.agg(**{'Total IMEI':('IMEI', 'size'),
'No unique days': ('dates', 'nunique'),
'First Date':('Date & Time', 'first'),
'Last Date': ('Date & Time', 'last')}))
print (df)
我只是手动形成每个列,然后创建DataFrame。
A_Party = [df.iloc[0,0],'']
Total_IMEI = [df['IMEI'].nunique(),'']
IMEI = df['IMEI'].unique()
First_Date = df.groupby('IMEI')['Date & Time'].first()
Last_Date = df.groupby('IMEI')['Date & Time'].last()
col = ['A-Party','Total IMEI','IMEI','First Date','Last Date']
df1 = pd.DataFrame(np.array([A_Party,Total_IMEI,IMEI,First_Date,Last_Date]).T,columns=col)
df1
相关内容
- 没有找到相关文章
最新更新
- RegEx在SAP 7.5中以字符的第一次出现开始并结束
- 使用MS Graph Rest APi上传文件到Documentset
- 忽略正则表达式搜索中的模式错误,不要使搜索崩溃
- 在一个帐户上有多个Youtube频道.如何将提供的API密钥限制为仅1个通道?
- 如何根据输入列表中的项数更改URL ?
- scipy. integrated .quad给出ValueError:给出无效的可调用对象
- 将Pandas Datetime转换为Postgres Date
- 不能在caporal中使用prog模块
- 使用Powershell打开特定的Outlook配置文件
- 如何在WrapPanel中获得元素的坐标?
- 如何检查webpack.config.js中的监视模式?
- 如何创建动态正则表达式生成器?
- ActorReferences作为Akka中其他角色的成员变量
- 我不知道有什么区别
- 文字SQL工作:数组值必须以"{"或维度信息开头
- Go-使函数与外观相似的结构切片一起工作的惯用方法
- 在一个弹出窗口中管理多个输入的焦点
- r语言 - 进行单向方差分析
- 当应用程序保持打开状态时,标识会话超时
- 在cmake中使用PUBLIC/PRIVATE/INTERFACE的例子
- 不能将反射字段强制转换为映射
- return NULL for whois python3
- Sequelize如何将日期格式设置为YYYY-MM-DD HH:mm:ss并将列保持蛇形大小写 &
- 如何从给定字符串中删除字符?(python中的字符串操作)
- WMI wbemtest错误0x80070005访问被拒绝
- 如何从Android应用程序发送数据到Node.js
- 单元格列表与LazyVGrid有时消失
- flutter stripe付款错误尚未初始化付款单
- 在使用@ pip安装需求时,部署到heroku失败
- setTimeout结束后如何填充元素?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium