【发布时间】:2017-05-17 23:38:39
【问题描述】:
这可能是一个微不足道的问题,但我仍在尝试找出 pandas/numpy。
所以,假设我有一个具有以下结构的表:
group_id | col1 | col2 | col3 | "A" | "B"
x | 1 | 2 | 3 | NaN | 1
x | 3 | 2 | 3 | 1 | 1
x | 4 | 2 | 3 | 2 | 1
y | 1 | 2 | 3 | NaN | 3
y | 3 | 2 | 3 | 3 | 3
z | 3 | 2 | 3 | 10 | 2
z | 2 | 2 | 3 | 6 | 2
z | 4 | 2 | 3 | 4 | 2
z | 4 | 2 | 3 | 2 | 2
请注意,有一个 group_id 用于对每一行中的元素进行分组。 所以一开始,我有 group_id 和 col1-col3 列的值。
然后对于每一行,如果 col1、col2 或 col3 的值 = 1,则“A”为 NaN,否则该值基于公式(与此处无关,因此我放置了一些数字)。
那个,我知道怎么用:
df["A"] = np.where(((df['col1'] == 1)|(df['col2']== 1) | (df['col3']) == 1))), NaN, value)
但是对于“B”列,我需要用 A 列中特定组的最小值来填充它。
例如,对于具有组 X 的所有行,“B”等于“1”,因为对于所有组“x”行,A 列中的最小值等于 1。
同样,对于“y”组中的行,最小值为 3,而对于“z”组,最小值为 2。我该如何使用 pandas...?这让我有点困惑,因为特定组的行数可以是不同的大小。
如果它们的大小都相同,我只能说用预设范围内的最小值填充它。
我希望这是有道理的;请让我知道我是否应该提供更清晰的示例或澄清任何事情!
【问题讨论】:
标签: python pandas numpy dataframe