这是我第一次问问题。我有一个数据帧,看起来如下:
import pandas as pd
data = [['AK', 'Co',2957],
['AK', 'Ot', 15],
['AK','Petr', 86848],
['AL', 'Co',167],
['AL', 'Ot', 10592],
['AL', 'Petr',1667]]
my_df = pd.DataFrame(data, columns = ['State', 'Energy', 'Elec'])
print(my_df)
我需要在前两列的基础上找到第三列的最大值和最小值。我确实浏览了一些stackoverflow问题,但找不到解决这个问题的正确方法。我的输出应该如下所示:
data = [['AK','Ot', 15],
['AK','Petr',86848],
['AL','Co',167],
['AL','Ot', 10592]]
my_df = pd.DataFrame(data, columns = ['State', 'Energy', 'Elec'])
print(my_df)
注意:在问题上留下负面标记之前,请让我知道我落后的地方
这个链接帮助了我:Python熊猫数据帧:为另一列的每个唯一值找到最大值
尝试使用.loc
过滤器的idxmin
和idxmax
。
new_df = my_df.loc[
my_df.groupby(["State"])
.agg(ElecMin=("Elec", "idxmin"), ElecMax=("Elec", "idxmax"))
.stack()
]
)
print(new_df)
State Energy Elec
0 AK Ot 15
1 AK Petr 86848
2 AL Co 167
3 AL Ot 10592