Pandas 在DataFrame中创建汇总列
在本文中,我们将介绍如何使用Pandas在DataFrame中创建汇总列。一个汇总列是一个由其他列的值汇总而来的单个列。
阅读更多:Pandas 教程
使用DataFrame的agg函数创建汇总列
Pandas的agg函数可以用于创建汇总列。agg函数可以对DataFrame中的每一行应用一个函数,并将结果存储在汇总列中。
例如,假设我们有这样一份包含以下内容的DataFrame:
| Name | Age | Gender | Salary | 
|---|---|---|---|
| Amy | 31 | Female | 62000 | 
| Bob | 52 | Male | 85000 | 
| Chris | 43 | Male | 72000 | 
| David | 28 | Male | 55000 | 
| Emily | 35 | Female | 68000 | 
我们想要创建一个汇总列,其中每行的值是“该行的工资除以该行的年龄”。
我们可以使用agg函数来实现这个操作。首先,我们需要创建一个lambda函数来计算每行的值。然后,我们可以将lambda函数作为参数传递给agg函数,并指定汇总列的名称。
df = pd.DataFrame({'Name': ['Amy', 'Bob', 'Chris', 'David', 'Emily'],
                   'Age': [31, 52, 43, 28, 35],
                   'Gender': ['Female', 'Male', 'Male', 'Male', 'Female'],
                   'Salary': [62000, 85000, 72000, 55000, 68000]})
df['Salary per Age'] = df.agg(lambda x: x['Salary'] / x['Age'], axis=1)
print(df)
输出:
    Name  Age  Gender  Salary  Salary per Age
0    Amy   31  Female   62000     2000.000000
1    Bob   52    Male   85000     1634.615385
2  Chris   43    Male   72000     1674.418605
3  David   28    Male   55000     1964.285714
4  Emily   35  Female   68000     1942.857143
我们可以看到,新的汇总列“Salary per Age”已经被添加到DataFrame中。
注意,lambda函数中的参数x是DataFrame中的每一行数据。由于agg函数对每个行进行迭代处理,因此,在lambda函数中将每个参数的Salary和Age值进行除法运算,得到每个行的结果。
使用DataFrame的apply函数创建汇总列
另一种创建汇总列的方法是使用apply函数。apply函数可以对整个DataFrame应用一个函数,并将结果存储在汇总列中。
例如,假设我们有以下DataFrame:
| Name | Age | Test1 | Test2 | Test3 | 
|---|---|---|---|---|
| Amy | 31 | 87 | 92 | 78 | 
| Bob | 52 | 78 | 85 | 90 | 
| Chris | 43 | 90 | 92 | 95 | 
| David | 28 | 80 | 75 | 85 | 
| Emily | 35 | 88 | 83 | 90 | 
我们想要创建一个汇总列,其中每行的值是“该行三次测试的平均值”。
我们可以使用apply函数来计算每行的平均值,并将结果存储在新的汇总列中。首先,我们需要创建一个lambda函数来计算每行的平均值。然后,我们可以使用apply函数将lambda函数应用于整个DataFrame,并将结果存储在汇总列中。
df = pd.DataFrame({'Name': ['Amy', 'Bob', 'Chris', 'David', 'Emily'],
                   'Age': [31, 52, 43, 28, 35],
                   'Test1': [87, 78, 90, 80, 88],
                   'Test2': [92, 85, 92, 75, 83],
                   'Test3': [78, 90, 95, 85, 90]})
df['Test Avg'] = df.apply(lambda x: (x.Test1 + x.Test2 + x.Test3) / 3, axis=1)
print(df)
输出:
    Name  Age  Test1  Test2  Test3   Test Avg
0    Amy   31     87     92     78  85.666667
1    Bob   52     78     85     90  84.333333
2  Chris   43     90     92     95  92.333333
3  David   28     80     75     85  80.000000
4  Emily   35     88     83     90  87.000000
我们可以看到,新的汇总列“Test Avg”已经被添加到DataFrame中。
注意,lambda函数中的参数x是每一行数据。由于apply函数对整个DataFrame应用lambda函数,因此,在此函数中将每一行的Test1,Test2和Test3的值相加,最后除以3,得到每行的结果。
总结
使用Pandas的agg和apply函数可以方便地创建汇总列。我们可以使用lambda函数(agg函数)或将函数应用于整个DataFrame(apply函数),以计算每行数据的值,并将结果存储在汇总列中。这使得我们可以更方便地汇总数据,并在DataFrame中进行操作和分析。
 极客教程
极客教程