我有一个 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
您需要在右侧创建一个系列:
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]