更新 pandas df 的向量场

问题描述 投票:0回答:1

我有一个 DataFrame,其中一列保存向量值:

df = pd.DataFrame({"a": [1,2,3], "b": [4,5,6]}, index=["one", "two", "three"])
s = pd.Series([(i*10, i*11, i*12) for i in df["a"]], index=df.index)
df["vec"] = s
#df

但我不知道如何更新这些向量值。例如:

df.loc[df["a"]>1, "vec"] = np.array((1,2,3)) # doesn't work...

总是得到类似的东西

ValueError: Must have equal len keys and value when setting with an iterable
python pandas vector
1个回答
0
投票

您需要在右侧创建一个系列:

m = df["a"]>1
df.loc[m, "vec"] = pd.Series([np.array((1,2,3))]*m.sum(),
                             index=df.index[m])

输出:

       a  b           vec
one    1  4  (10, 11, 12)
two    2  5     [1, 2, 3]
three  3  6     [1, 2, 3]
© www.soinside.com 2019 - 2024. All rights reserved.