Pandas 基于条件获取数据框行数
在本文中,我们将介绍如何使用Pandas获取数据框(DataFrame)中满足特定条件的行数。这对于数据分析和处理中的许多任务非常有用。
假设我们有一个包含以下数据的数据框:
序号 | 姓名 | 年龄 | 性别 | 成绩 |
---|---|---|---|---|
1 | Mike | 22 | M | 80 |
2 | Alice | 25 | F | 90 |
3 | Bob | 21 | M | 85 |
4 | Cindy | 24 | F | 76 |
5 | David | 23 | M | 92 |
6 | Erica | 22 | F | 88 |
7 | Frank | 25 | M | 78 |
我们可以通过以下方法获取满足特定条件的行数:
阅读更多:Pandas 教程
1. 获取符合特定条件的行数
我们可以使用pandas.DataFrame.loc
函数根据特定条件过滤数据框,然后使用len()
函数获取符合条件的行数。例如,如果我们要获取所有性别为女性且成绩大于85的人数,可以进行如下操作:
df_filtered = df.loc[(df['性别'] == 'F') & (df['成绩'] > 85)]
count = len(df_filtered)
print(count)
输出为2,表示数据框中有两个女性考试成绩大于85分。
2. 获取符合特定条件的行数并将结果添加到数据框中
有时候,我们需要将符合特定条件的行数添加到数据框中,可以使用pandas.DataFrame.loc
和pandas.DataFrame.at
函数,例如:
df['女生数'] = df.loc[df['性别'] == 'F'].apply(lambda x:len(x), axis=1)
df.at[0, '女生数'] = len(df.loc[(df['性别'] == 'F') & (df.index != 0)])
print(df)
输出结果为:
序号 | 姓名 | 年龄 | 性别 | 成绩 | 女生数 |
---|---|---|---|---|---|
1 | Mike | 22 | M | 80 | 2 |
2 | Alice | 25 | F | 90 | 2 |
3 | Bob | 21 | M | 85 | 2 |
4 | Cindy | 24 | F | 76 | 2 |
5 | David | 23 | M | 92 | 2 |
6 | Erica | 22 | F | 88 | 2 |
7 | Frank | 25 | M | 78 | 2 |
以上代码将女生数
列添加到数据框中,并分别统计每个人之前的女生数和全部女生数。其中,df.loc[df['性别'] == 'F'].apply(lambda x:len(x), axis=1)
用于统计每行性别为女性的数目,df.at[0, '女生数'] = len(df.loc[(df['性别'] == 'F') & (df.index != 0)])
用于计算序号为1之后的女生数并添加到第一行的女生数
列中。
总结
以上就是使用Pandas获取数据框中符合特定条件的行数的方法,其中pandas.DataFrame.loc
函数用于过滤数据,len()
函数用于计算符合条件的行数,pandas.DataFrame.at
函数用于添加到数据框中。这些方法可以高效地完成数据分析和处理中的各种任务。