Pandas:如何合并具有相同列值的行
您可以使用以下基本语法在 pandas DataFrame 中组合具有相同列值的行:
#define how to aggregate various fields agg_functions = {' field1 ': ' first ', ' field2 ': ' sum ', ' field ': ' sum '} #create new DataFrame by combining rows with same id values df_new = df. groupby (df[' id ']). aggregate (agg_functions)
以下示例展示了如何在实践中使用此语法。
示例:在 Pandas 中合并具有相同列值的行
假设我们有以下 pandas DataFrame,其中包含有关公司各个员工的销售和退货信息:
import pandas as pd #create dataFrame df = pd. DataFrame ({' id ': [101, 101, 102, 103, 103, 103], ' employee ': ['Dan', 'Dan', 'Rick', 'Ken', 'Ken', 'Ken'], ' sales ': [4, 1, 3, 2, 5, 3], ' returns ': [1, 2, 2, 1, 3, 2]}) #view DataFrame print (df) id employee sales returns 0 101 Dan 4 1 1 101 Dan 1 2 2 102 Rick 3 2 3 103 Ken 2 1 4 103 Ken 5 3 5 103 Ken 3 2
我们可以使用以下语法来合并id列中具有相同值的行,然后聚合剩余的列:
#define how to aggregate various fields agg_functions = {' employee ': ' first ', ' sales ': ' sum ', ' returns ': ' sum '} #create new DataFrame by combining rows with same id values df_new = df. groupby (df[' id ']). aggregate (agg_functions) #view new DataFrame print (df_new) employee sales returns id 101 Dan 5 3 102 Rick 3 2 103 Ken 10 6
新的 DataFrame 合并了先前 DataFrame 中id列中具有相同值的所有行,然后计算sales和returns列中的值的总和。
注意:有关可与GroupBy()函数一起使用的聚合的完整列表,请参阅pandas 文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务: