python - 使用 df.apply 返回满足条件的行数

标签 python pandas dataframe

我有一个给定的数据框:

Initial Dataframe

现在从数据帧中可以看出,玩家 x 输了 6 次,玩家 y 输了 9 次。我想制作一个数据框,其中包含玩家以及他们输了多少次。因此最终的数据框应该如下所示

Final Dataframe

我发现的一个选项是使用 dataframe.apply,其中我可以返回维持条件的行数。相同的代码是:

import pandas as pd

df=pd.read_csv('C:/Users/sadik/Desktop/Data.csv')

df = df.apply(lambda x : True
            if x['Result'] == "Lost" else False, axis = 1)
num_rows = len(df[df == True].index)
print('Number of Rows in dataframe in which Condition is met: ',
      num_rows )

这给了我输出

runfile('C:/Users/sadik/untitled0.py', wdir='C:/Users/sadik')
Number of Rows in dataframe in which Condition is met:  15

我的问题是如何使用相同的逻辑来按预期输出中所示的玩家姓名输出计数

最佳答案

您可以按名称进行分组,然后agg重新调整丢失的总数:

out = df.groupby("Name").Result.agg(lambda s: s.eq("Lost").sum()).to_frame("Count")

我们最后将其转换为一个数据帧,其计数名为“Count”

获取

>>> out

      Count
Name
x         6
y         9

关于python - 使用 df.apply 返回满足条件的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67847244/

相关文章:

python - 使用 python panda 按月、年计算出现频率

r - 在不分离分组变量的情况下均匀拆分数据框

python - 如何使用字典语法调用函数?

java - Sikuli:无论模式是否存在,onAppear 都会起作用

python - Unicode解码错误: 'ascii' codec can't decode byte 0xe2 in position 35: ordinal not in range(128)

python - Pyodbc 和 SQL Server 类型错误 : not all arguments converted during string formatting

python - 如何在 Python 中更改 Pandas Dataframe 的结构?

python - 如何使用列名和列中的值翻转数据框,同时将所有静态列保留在数据框中?

python - Groupby Sum 忽略几列

r - 如何计算常见概念并将结果存储在矩阵中?