我有一个 Dataframe :
import pandas as pd
df = pd.DataFrame(
{'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'variable': [8, 9, 10, 11, 2, 3, 4, 5],
'another_variable': [1, 1, 1, 2, 1, 1, 2, 2]}
)
我希望找到variable
(向上计数),其中another_variable
仍然等于1。
我可以对数据框进行分组并过滤相关行:
df.groupby(['team']).apply(lambda g: g[g['another_variable'] == 1])
# Output:
# team variable another_variable
#team
#A 0 A 8 1
# 1 A 9 1
# 2 A 10 1
#B 4 B 2 1
# 5 B 3 1
但是如果我加上.variable.min()
,我只得到一个值,而不是每个组一个值(然后我可以计算最大值),我做错了什么?
2条答案
按热度按时间ee7vknir1#
首先过滤,然后
groupby
:输出:
如果某个组可能没有1,而您希望有
NaN
,则使用:A
中没有1
时的示例:55ooxyrt2#
以下似乎是Mozway已经提出的一个变体: