python - 通过 python3.0 分组 Dataframe[groupby()]
问题描述
df = pd.DataFrame({'order':['A', 'B', 'C', 'D', 'E', 'F'],'quantity':[1,1,2,3,3,4]})
df_out = df.order.repeat(df.quantity).reset_index(drop=True).to_frame()
df_out['grp'] = df_out.index // 4
df_out.groupby(['grp','order'])['order'].count().to_frame(name='quantity')
输出 :
quantity
grp order
0 A 1
B 1
C 2
1 D 3
E 1
2 E 2
F 2
3 F 2
在 groupby() 函数中,我得到了我想要的结果。但是当我尝试Concat()
使用时df1
,
df1 = pd.DataFrame({'order':['A', 'B', 'C', 'D', 'E', 'F'],'quantity':[1,1,2,3,3,4]})
我发现0
fromgrp
仅分配给第一行
grp order
0 A 1
不像
quantity
grp order
0 A 1
0 B 1
0 C 2
我怎么解决这个问题 ?
解决方案
你得到groupby(*multiple_columns*).*some_action*
的是一个Dataframe
with MultiIndex
。您可以重置它:
ans = (
df_out
.groupby(['grp', 'order'])['order']
.count()
.to_frame(name='quantity')
.reset_index())
然后您可以使用任何列作为索引并删除该列:
ans.index = ans['grp']
ans = ans.drop('grp', axis=1)
ans
是:
order quantity
grp
0 A 1
0 B 1
0 C 2
1 D 3
1 E 1
2 E 2
2 F 2
3 F 2
推荐阅读
- c# - COM 类中的字符串数组属性并从 VBA 设置它
- javascript - 根据控制器返回的属性捕获 ajax 响应
- javascript - React-Redux,调度函数时,“未捕获的 TypeError 不是函数”
- android - 如何将 ImageView 转换为文件 imageFile
- python - 按长度和最后 N 个字符对字符串列表进行排序
- mysql - 数据库查询在生产与测试中执行较慢,在同一台服务器上,相同的数据库结构
- vuejs2 - 我想如何获得复选框的值?
- excel - 如果文件名的第一部分与文件夹中的文件匹配,则在电子表格中返回 1 或 0
- react-native - 反应原生原生基础 ListItem touchableHighlightStyle
- javascript - 用于多种功能的导出模块