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