Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用特定列上的Groupby聚合函数,显示结果中的所有列_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python 使用特定列上的Groupby聚合函数,显示结果中的所有列

Python 使用特定列上的Groupby聚合函数,显示结果中的所有列,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我希望有一个基于id的grouby和sum,但结果显示所有列 示例代码 将熊猫作为pd导入 将numpy作为np导入 mre=[ [“2018-1”,“出售”,109000.0,“公寓”,73.0,4.0], [“2018-1”,“出售”,109000.0,“公寓”,“南”,0.0], [“2018-2”,“出售”,239300.0,“房屋”,163.0,4.0], [“2018-2”,“出售”,239300.0,“房屋”,51.0,2.0], [“2018-2”,“出售”,239300.0,“

我希望有一个基于id的grouby和sum,但结果显示所有列

示例代码
将熊猫作为pd导入
将numpy作为np导入
mre=[
[“2018-1”,“出售”,109000.0,“公寓”,73.0,4.0],
[“2018-1”,“出售”,109000.0,“公寓”,“南”,0.0],
[“2018-2”,“出售”,239300.0,“房屋”,163.0,4.0],
[“2018-2”,“出售”,239300.0,“房屋”,51.0,2.0],
[“2018-2”,“出售”,239300.0,“房屋”,51.0,2.0]
]
df=pd.数据帧(mre)
#重命名列
df.columns=[“\u idMutation”,“typeOfSearch”,
“价格”、“建筑类型”、“表面”、“nbRoom”]
df[“表面”]=df[“表面”].aType(浮动)
打印(df)
基本数据帧
\u id变异类型搜索价格类型建筑表面n房间
0 2018-1售出109000.0套公寓73.0 4.0套
2018年1月售出109000.0套公寓NaN 0.0
2 2018-2售出239300.0套163.0 4.0
3 2018-2售出239300.0套51.0 2.0
4 2018-2售出239300.0套51.0 2.0
预期结果
groupby
基于
\u idMutation
,它对
曲面
nbRoom
求和,但不影响其他行。我想显示所有列,删除重复的
\u
并显示
groupby

\u id变异类型搜索价格类型建筑表面n房间
0 2018-1售出109000.0套公寓73.0 4.0套
2018年1月2日售出239300.0套住房265.08.0套
现行代码 下面的解决方案产生了预期的结果。我有1460万行,我提出的解决方案看起来没有优化

#Groupby on _idMutation&sum[“surface”,“nbRoom”]
gb_df=df[[“surface”,“nbRoom”]].groupby(df[“_idMutation”]).sum()
#删除重复项
drop_duplicates(subset=[“_idMutation”],inplace=True)
#将_id设置为df索引
df.set_索引(“_idMutation”,inplace=True)
#Concat df与gb_df
df=pd.concat(
[df[[“搜索类型”、“价格”、“建筑类型”]],gb_df],轴=1)

我们可以使用
GroupBy.agg
并使用dict设置每列所需的聚合方法。在这种情况下,我们只需要
首先
求和

dfg = df.groupby("_idMutation", as_index=False).agg({
    "typeOfSearch": "first",
    "price": "first",
    "typeOfBuilding": "first",
    "surface": "sum",
    "nbRoom": "sum"
})

2018-2年
nbRoom
nbRoom
之和错误,您可以编辑吗?是的,很抱歉:)
  _idMutation typeOfSearch     price typeOfBuilding  surface  nbRoom
0      2018-1         Sold  109000.0    Appartement     73.0     4.0
1      2018-2         Sold  239300.0          House    265.0     8.0