Pandas通过行或列的总和来过滤一个数据框架
在这篇文章中,我们将看到如何通过行或列的总和来过滤Pandas DataFrame。这在某些情况下是很有用的。假设你有一个由顾客和他们购买的水果组成的数据框。行中有不同的客户,列中有不同类型的水果。你想根据他们的购买情况来过滤这个数据框。要了解更多关于根据列值和行的条件过滤Pandas DataFrame的信息,请参考文章链接。Pandas dataframe.sum()函数被用来返回数值之和。
需要的步骤:
1.创建或导入数据框架
2.对行进行求和。这可以使用.sum()函数并传递参数axis=1来完成。
3.对各列进行求和。通过使用.sum()函数并传递参数axis=0
4.在所需条件的基础上进行过滤
根据行和列之和进行过滤
如果你想删除没有购买任何水果的客户或没有购买任何特定水果的客户。在这种情况下,我们需要根据行或列之和的值进行过滤。下面是上述方法的代码实现。

import pandas as pd
df = pd.DataFrame({'Apple': [1, 1, 0, 0, 0, 0],
'Orange': [0, 1, 1, 0, 0, 1],
'Grapes': [1, 1, 0, 0, 1, 1],
'Peach': [1, 1, 0, 0, 1, 1],
'Watermelon': [0, 0, 0, 0, 0, 0],
'Guava': [1, 0, 0, 0, 0, 0],
'Mango': [1, 0, 1, 0, 1, 0],
'Kiwi': [0, 0, 0, 0, 0, 0]})
print("Dataframe before filtering\n")
print(df)
df = df[df.sum(axis=1) > 0]
df = df.loc[:, df.sum(axis=0) > 0]
print("\nDataframe after filtering\n")
print(df)
输出:

根据几列之和过滤行
现在,如果我们想从一个有限的列表中过滤那些没有购买任何一种水果的客户,例如,没有购买葡萄、番石榴或桃子的客户应该从数据框中删除。在这里,我们根据某些列来过滤这些行,在这个例子中,这些列是葡萄、桃子和番石榴。

在计算这三列的所有行之和时,我们发现索引2和3的总和为零。
import pandas as pd
df = pd.DataFrame({'Apple': [1, 1, 0, 0, 0, 0],
'Orange': [0, 1, 1, 0, 0, 1],
'Grapes': [1, 1, 0, 0, 1, 1],
'Peach': [1, 1, 0, 0, 1, 1],
'Watermelon': [0, 0, 0, 0, 0, 0],
'Guava': [1, 0, 0, 0, 0, 0],
'Mango': [1, 0, 1, 0, 1, 0],
'Kiwi': [0, 0, 0, 0, 0, 0]})
print("Dataframe before filtering\n")
print(df)
columns = ['Grapes', 'Guava', 'Peach']
df = df[df[columns].sum(axis=1) > 0]
print("\nDataframe after filtering\n")
print(df)
输出:

根据总和从整个数据集中筛选出少数几列。
如果你想从一个总和等于零的列列表中删除任何一列。我们只对这些列进行求和,并对它们施加条件。

import pandas as pd
df = pd.DataFrame({'Apple': [1, 1, 0, 0, 0, 0],
'Orange': [0, 1, 1, 0, 0, 1],
'Grapes': [1, 1, 0, 0, 1, 1],
'Peach': [1, 1, 0, 0, 1, 1],
'Watermelon': [0, 0, 0, 0, 0, 0],
'Guava': [1, 0, 0, 0, 0, 0],
'Mango': [1, 0, 1, 0, 1, 0],
'Kiwi': [0, 0, 0, 0, 0, 0]})
print("Dataframe before filtering\n")
print(df)
columns = ['Apple', 'Mango', 'Guava', 'Watermelon']
for column in columns:
if (df[column].sum() <= 0):
df.drop(column, inplace=True, axis=1)
print("\nDataframe after filtering\n")
print(df)
输出:

这样,我们就可以根据一些情况,通过对行和列施加一些条件来修改我们在Pandas中的数据框架。