1. 导入`pandas`库。
2. 将数据加载到一个DataFrame中。
3. 使用`groupby`和`apply`方法,并在自定义函数中获取最大值。
import pandas as pd
# 创建 DataFrame
data = {
"种类": ["车辆", "飞机", "车辆", "飞机", "火车", "车辆", "车辆", "飞机", "车辆", "火车", "火车", "火车", "火车", "车辆"],
"型号": ["奔驰", "A330", "宝马", "B777", "和谐号", "奥迪", "奔驰", "C919", "宝马", "复兴号", "和谐号", "和谐号", "B777", "宝马"],
"交易方向": ["买入", "买入", "买入", "卖出", "买入", "卖出", "卖出", "卖出", "卖出", "买入", "卖出", "买入", "卖出", "买入"],
"数量": [3.0, 8.0, 11.0, 4.0, 6.0, 16.0, 5.0, 7.0, 10.0, 15.0, 8.0, 9.0, 1.0, 2.0]
}
df = pd.DataFrame(data)
# 使用 groupby 和 apply 方法,获取每个分组的最大值
result = df.groupby(["种类", "型号", "交易方向"]).apply(lambda x: x.loc[x["数量"].idxmax()]).reset_index(drop=True)
print(result)
1. `groupby(["种类", "型号", "交易方向"])`:按种类、型号和交易方向分组。
2. `apply(lambda x: x.loc[x["数量"].idxmax()])`:对每个分组应用一个自定义函数,找出数量上的最大值所在的行。
3. `.reset_index(drop=True)`:重置索引。