Pandas DF - 按 A 列中的值过滤 DF,B 列中的最大值(分组依据?)
Pandas DF - Filter DF by Value in Column A, Highest Value of in Column B (Group By?)
我正在尝试做一些我觉得不应该太难的事情,但我遇到了麻烦。
最好的方法是说明它。我目前有一个 DF 有很多 rows/columns。我想在 A 列的唯一值中获取 B 列的最高值,并删除其余无关紧要的行。我很难说清楚是什么,也许分组等等
例如:
初始Table
Col A - Col B - Col C
2012 1 2
2012 1 7
2012 2 45
2012 2 34
2012 3 4
2012 3 32
2013 1 54
2013 1 3
2013 2 5
2013 2 23
Table 我想结束
Col A - Col B - Col C
2012 3 4
2012 3 32
2013 2 5
2013 2 23
感谢大家的帮助!!
会继续四处寻找,但这是一个棘手的问题
尝试:
df_out = df.groupby("Col A").apply(lambda x: x[x["Col B"] == x["Col B"].max()])
print(df_out.reset_index(drop=True))
打印:
Col A Col B Col C
0 2012 3 4
1 2012 3 32
2 2013 2 5
3 2013 2 23
或者:使用.transform
:
df_out = df[df["Col B"] == df.groupby("Col A")["Col B"].transform("max")]
print(df_out)
我正在尝试做一些我觉得不应该太难的事情,但我遇到了麻烦。
最好的方法是说明它。我目前有一个 DF 有很多 rows/columns。我想在 A 列的唯一值中获取 B 列的最高值,并删除其余无关紧要的行。我很难说清楚是什么,也许分组等等
例如:
初始Table
Col A - Col B - Col C
2012 1 2
2012 1 7
2012 2 45
2012 2 34
2012 3 4
2012 3 32
2013 1 54
2013 1 3
2013 2 5
2013 2 23
Table 我想结束
Col A - Col B - Col C
2012 3 4
2012 3 32
2013 2 5
2013 2 23
感谢大家的帮助!!
会继续四处寻找,但这是一个棘手的问题
尝试:
df_out = df.groupby("Col A").apply(lambda x: x[x["Col B"] == x["Col B"].max()])
print(df_out.reset_index(drop=True))
打印:
Col A Col B Col C
0 2012 3 4
1 2012 3 32
2 2013 2 5
3 2013 2 23
或者:使用.transform
:
df_out = df[df["Col B"] == df.groupby("Col A")["Col B"].transform("max")]
print(df_out)