gpt4 book ai didi

python - Pandas 使用 numpy 数组填充值

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:25 25 4
gpt4 key购买 nike

我有一个这样的数据框,它还有其他列,但这一列很重要:

df = pd.DataFrame({'A': ['foo','bar','baz','foo','bar','bar','baz','foo']})

我正在尝试创建另一列,然后将数组值添加到与 A 列匹配的新列。

新列:df['B'] = np.nan

数组:arr = np.array([5,3,9])

尝试

我想将数组分配给 A 列中的所有 foo

df['B'] = np.where(df['A']=='foo',arr,np.nan) # ValueError: operands could not be 
# broadcast together with shapes
# (8,) (3,) ()

我也尝试过:

df['B'][df['A']=='foo'].values = arr # AttributeError: can't set attribute

最后,

df['B'] = df['B'][df['A']=='foo'].map(arr) # TypeError: 'numpy.ndarray' object is not callable

预期输出

     A   B
0 foo 5
1 bar NaN
2 baz NaN
3 foo 3
4 bar NaN
5 bar NaN
6 baz NaN
7 foo 9

最佳答案

如果您确定 arr的长度与 'foo' 出现的次数相同,您可以使用以下内容来设置值:

df.loc[df['A'] == 'foo', 'B'] = arr

这有点像 df['B'][df['A']=='foo'] = arr (接近您尝试过的方法之一),但避免链式赋值(这可能导致值设置不正确,或根本不正确)。

关于python - Pandas 使用 numpy 数组填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com