请教如何通过数组 A 、B 得到 C ,先判断 B 中是否有重复,然后在 A 中找最大的其余的设为 0 。 A = array([3.33, 1.18, 5.42, 4.12])、B = array([449, 3676, 10975, 10975])、C = array([3.33, 1.18, 5.42, 0])
1
TimePPT 2023-02-15 17:38:03 +08:00 1
import pandas as pd
import numpy as np A = np.array([3.33, 1.18, 5.42, 4.12]) B = np.array([449, 3676, 10975, 10975]) df = pd.DataFrame(data={"A": A, "B": B}) df["C"] = df.groupby("B")["A"].transform("max") df["C"] = df.apply(lambda row: 0 if row["C"] > row["A"] else row["C"], axis=1) df |
2
TimePPT 2023-02-15 17:38:37 +08:00
随手写的,应该还有更简洁的写法
|