Python 检查最后一个分组的元素

Python 检查最后一个分组的元素,python,pandas,Python,Pandas,这个问题有点类似于 我有这样的数据帧: df = pd.DataFrame({ 'user': ['1', '1', '1', '2', '2', '2', '3', '3', '3'], 'value': ['4', '4', '1', '2', '2', '2', '3', '1', '1'] }) “value”按日期排序,因此我需要计算最后一个元素等于某个值的用户数,例如“1”,它应该是字符串 对于这个df,它将是2,因为组“用户1”的最后一个元素是“1”,这对于用户3

这个问题有点类似于

我有这样的数据帧:

df = pd.DataFrame({
    'user': ['1', '1', '1', '2', '2', '2', '3', '3', '3'],
    'value': ['4', '4', '1', '2', '2', '2', '3', '1', '1']
})
“value”按日期排序,因此我需要计算最后一个元素等于某个值的用户数,例如“1”,它应该是字符串

对于这个df,它将是2,因为组“用户1”的最后一个元素是“1”,这对于用户3来说是一样的,但是用户2的最后一个元素不是“1”,所以我不需要按用户对它进行计数,对组的最后一行使用keep='False',然后按和检查值是否相等,并按和计算真值:

另一个想法是:

按用户对组的最后一行使用keep='False',然后检查值是否相等,并按总和计算Trues值:

另一个想法是:


只需使用groupby获取最后一个值并进行比较

df.groupby('user').apply(lambda x:  True if x['value'].iloc[-1]=='1' else False).sum()

只需使用groupby获取最后一个值并进行比较

df.groupby('user').apply(lambda x:  True if x['value'].iloc[-1]=='1' else False).sum()

你能试一试吗

df.groupby'user',sort=False.value.applylambda vals:vals.iloc[-1]==1'。求和 输出:

2

你能试一试吗

df.groupby'user',sort=False.value.applylambda vals:vals.iloc[-1]==1'。求和 输出:

2