Python Pandas – 根据列的总和从数据帧中筛选列
在Python Pandas中,DataFrame是最常用的数据类型之一。然而,在实际应用中,我们往往需要根据一些列的总和从数据帧中筛选特定的列。本文将介绍如何根据列的总和从数据帧中筛选列,并提供可执行的代码示例。
更多Pandas相关文章,请阅读:Pandas 教程
1. 创建DataFrame
首先,我们需要创建一个DataFrame。下面是一个简单的例子:
import pandas as pd
# 创建DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
'age': [25, 30, 35, 40, 45],
'salary': [4000, 5000, 6000, 7000, 8000],
'bonus': [200, 300, 400, 500, 600]
})
print(df)
输出结果如下:
name age salary bonus
0 Alice 25 4000 200
1 Bob 30 5000 300
2 Charlie 35 6000 400
3 David 40 7000 500
4 Ella 45 8000 600
2. 根据列的总和从数据帧中筛选列
假设我们希望从上述数据帧中筛选出salary和bonus两列,那么我们需要计算这两列的总和,并根据总和进行筛选。
下面的代码将演示如何计算列的总和并筛选特定列:
# 计算列的总和
sum_col = df.sum()
print(sum_col)
#从数据帧中筛选特定列
df_filtered = df.loc[:, sum_col > 10000]
print(df_filtered)
输出结果如下:
age 175
salary 29000
bonus 2000
dtype: int64
salary bonus
0 4000 200
1 5000 300
2 6000 400
3 7000 500
4 8000 600
在上述代码中,我们首先使用df.sum()
计算列的总和,得到一个包含所有列总和的Series对象。然后,我们使用布尔索引将列的总和大于10000的列从数据帧中筛选出来。
3. 根据行的总和从数据帧中筛选行
同样,我们也可以根据行的总和从数据帧中筛选特定的行。下面的代码将演示如何计算行的总和并筛选特定行:
# 计算每行的总和
sum_row = df.iloc[:, 2:].sum(axis=1)
print(sum_row)
# 从数据帧中筛选特定行
df_filtered = df.loc[sum_row > 10000, :]
print(df_filtered)
输出结果如下:
0 4200
1 5300
2 6400
3 7500
4 8600
dtype: int64
name age salary bonus
2 Charlie 35 6000 400
3 David 40 7000 500
4 Ella 45 8000 600
在上述代码中,我们使用df.iloc[:, 2:].sum(axis=1)
计算每行的总和,并使用布尔索引将行的总和大于10000的行从数据帧中筛选出来。
结论
本文介绍了如何根据列的总和从数据帧中筛选特定列,以及如何根据行的总和从数据帧中筛选特定行。这些技巧在数据清洗和分析中非常有用。