Pandas通过行或列的总和来过滤一个数据框架

Pandas通过行或列的总和来过滤一个数据框架

在这篇文章中,我们将看到如何通过行或列的总和来过滤Pandas DataFrame。这在某些情况下是很有用的。假设你有一个由顾客和他们购买的水果组成的数据框。行中有不同的客户,列中有不同类型的水果。你想根据他们的购买情况来过滤这个数据框。要了解更多关于根据列值和行的条件过滤Pandas DataFrame的信息,请参考文章链接。Pandas dataframe.sum()函数被用来返回数值之和。

需要的步骤:

1.创建或导入数据框架
2.对行进行求和。这可以使用.sum()函数并传递参数axis=1来完成。
3.对各列进行求和。通过使用.sum()函数并传递参数axis=0
4.在所需条件的基础上进行过滤

根据行和列之和进行过滤

如果你想删除没有购买任何水果的客户或没有购买任何特定水果的客户。在这种情况下,我们需要根据行或列之和的值进行过滤。下面是上述方法的代码实现。

Pandas通过行或列的总和来过滤一个数据框架

# importing pandas library
import pandas as pd
  
# creating dataframe
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)
  
# filtering on the basis of rows
df = df[df.sum(axis=1) > 0]
  
# filtering on the basis of columns
df = df.loc[:, df.sum(axis=0) > 0]
  
print("\nDataframe after filtering\n")
print(df)
Python

输出:

Pandas通过行或列的总和来过滤一个数据框架

根据几列之和过滤行

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

Pandas通过行或列的总和来过滤一个数据框架

在计算这三列的所有行之和时,我们发现索引2和3的总和为零。

# importing pandas library
import pandas as pd
  
# creating dataframe
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)
  
# list of columns to be considered
columns = ['Grapes', 'Guava', 'Peach']
  
# filtering rows on basis of certain columns
df = df[df[columns].sum(axis=1) > 0]
  
print("\nDataframe after filtering\n")
print(df)
Python

输出:

Pandas通过行或列的总和来过滤一个数据框架

根据总和从整个数据集中筛选出少数几列

如果你想从一个总和等于零的列列表中删除任何一列。我们只对这些列进行求和,并对它们施加条件。

Pandas通过行或列的总和来过滤一个数据框架

# importing pandas library
import pandas as pd
  
# creating dataframe
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)
  
# list of columns to be considered
columns = ['Apple', 'Mango', 'Guava', 'Watermelon']
  
# iterating through the columns and dropping
# columns with sum less than equals to 0
for column in columns:
    if (df[column].sum() <= 0):
        df.drop(column, inplace=True, axis=1)
  
print("\nDataframe after filtering\n")
print(df)
Python

输出:

Pandas通过行或列的总和来过滤一个数据框架

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程