请教如何根据条件使用 numpy 函数生成一个新的数组

2023-02-15 16:50:20 +08:00
 songdg

请教如何通过数组 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])

1306 次点击
所在节点    Python
3 条回复
TimePPT
2023-02-15 17:38:03 +08:00
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
TimePPT
2023-02-15 17:38:37 +08:00
随手写的,应该还有更简洁的写法
songdg
2023-02-18 14:52:32 +08:00
@TimePPT 谢谢帮助,我觉得还是写个函数来解决这个问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916395

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX