Pandas:如何根据观察属性更改列观察

Pandas: How to change column observations based on that observations attributes

我有一个数据框,其中有一列的观察值以 "P" 或 "N" 开头,后跟一个数字。

    df
    Col1         Col2
    ...          "P14"
                 "N13"

我想更改 Col2 中这些观察值的值。

使用 for 循环,我成功做到了这一点

i = 0
for value in df["Col2"]:
    if df[0] == "P":
        value = int([pvi[1:3])
    ...
    df["Col2"][i] = value
    i += 1

但我想知道是否有一种方法可以使用更 pandas/numpy 的方法来做到这一点。我已经走到这一步了:

df["Col2"] = np.select(
    [
        df["Col2"].str.startswith("P"), 
        df["Col2"].str.startswith("N"),
    ],
    [
        # Stuck here.
        ???,
        ???
    ],
    default = "Unknown"
)    

谢谢!

使用np.where:

s=pd.Series([float(key[2:]) for key in df['Col2']])
df['Col2']=np.where(df['Col2'].str.contains('P'),s,-s)
print(df)


Col1         Col2
...          14.0
            -13.0