Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 对行进行分组并定义列聚合规则_Python_Pandas_Duplicates_Aggregate_Pandas Groupby - Fatal编程技术网

Python 对行进行分组并定义列聚合规则

Python 对行进行分组并定义列聚合规则,python,pandas,duplicates,aggregate,pandas-groupby,Python,Pandas,Duplicates,Aggregate,Pandas Groupby,我希望在pandas中整合多行不同的数据类型。我有我的.groupby()参数:['ID']。列['A']按['ID']分组时可能重复值,或者每行的数据不同。列['B']只需通过.sum()聚合即可 1)按['ID']分组,2)分组后重复显示['a']的值,分组后不重复显示['a']的第一个值,以及3)将列['B']求和到新的数据帧中,有什么好方法 output_df ID A B 140-1 Apple 8.2 143-2 Plum

我希望在pandas中整合多行不同的数据类型。我有我的
.groupby()
参数:
['ID']
。列
['A']
['ID']
分组时可能重复值,或者每行的数据不同。列
['B']
只需通过
.sum()
聚合即可

1)按
['ID']
分组,2)分组后重复显示
['a']
的值,分组后不重复显示
['a']
的第一个值,以及3)将列
['B']
求和到新的数据帧中,有什么好方法

output_df

ID        A        B
140-1    Apple     8.2
143-2    Plum      3.2
尝试:

你可以试试

df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()

    ID      A       B
0   140-1   Apple   8.2
1   143-2   Plum    3.2

您的代码看起来可以在任何其他数据帧上工作。出于某种原因,我抛出了'TypeError:'Series'对象是可变的,因此它们不能在我的实际工作数据帧上进行哈希运算。你能试试这个吗?agg({'A':'first','B':'sum'}).reset_index()我弄明白了…我调用列的方式不正确。谢谢你的帮助!
input_df.groupby('ID').apply(lambda f: pd.DataFrame({'A': f.A.head(1), 'B': f.B.sum()})).reset_index(level=0)


#       ID      A    B
# 0  140-1  Apple  8.2
# 2  143-2   Plum  3.2
df.groupby('ID').agg({'A': lambda x: x.unique()[0], 'B': 'sum'}).reset_index()

    ID      A       B
0   140-1   Apple   8.2
1   143-2   Plum    3.2