2017-10-06 67 views
1

我正在尋找合併多行不同dtypes的熊貓。我有我的.groupby()參數:['ID']。當按['ID']分組時,列['A']可能重複值,或者每行的數據不同。僅需要通過.sum()彙總列['B']分組行和定義列聚合規則

input_df 

ID  A  B 
140-1 Apple  3.2 
140-1 Pear  5.0 
143-2 Plum  1.2 
143-2 Plum  2.0 

什麼是由['ID']一個偉大的方式1)基團,如果重複2)的['A']顯示值分組,的['A']第一值,如果分組後不能重複的,和3)之和柱['B']後進入一個新的數據幀?

output_df 

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

回答

1

您可以嘗試

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 
+0

你的代碼看起來像它會在任何其它數據幀的工作。出於某種原因,我拋出'TypeError:'系列'對象是可變的,因此它們不能被散列'在我的實際工作數據框上。 – ParalysisByAnalysis

+0

你可以試試這個嗎? df.groupby('ID')。agg({'A':'first','B':'sum'})。reset_index() – Vaishali

+0

我想出了......我調用列的方式是不正確的。謝謝你的幫助! – ParalysisByAnalysis

1

嘗試:

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