gpt4 book ai didi

python - Panda-Column 作为 numpy 数组的索引

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:53 24 4
gpt4 key购买 nike

如何使用 panda 行作为 numpy 数组的索引?说我有

>>> grid = arange(10,20)
>>> df = pd.DataFrame([0,1,1,5], columns=['i'])

我想做

>>> df['j'] = grid[df['i']]
IndexError: unsupported iterator index

实际执行此操作的简短而干净的方法是什么?

更新

准确地说,我想要一个额外的列,其值对应于第一列包含的索引:df['j'][0] = grid[df['i'][0 ]] 在列 0

预期输出:

index i j 
0 0 10
1 1 11
2 1 11
3 5 15

并列案例:Numpy 到 Numpy

只是为了展示这个想法的来源,在标准的 python/numpy 中,如果你有的话

>>> keys = [0, 1, 1, 5]
>>> grid = arange(10,20)
>>> grid[keys]
Out[30]: array([10, 11, 11, 15])

这正是我想做的。只是我的键没有存储在向量中,它们存储在列中。

最佳答案

这是一个在 pandas 0.13.0/numpy 1.8.0 中出现的 numpy 错误。

你可以这样做:

In [5]: grid[df['i'].values]
Out[5]: array([0, 1, 1, 5])

In [6]: Series(grid)[df['i']]
Out[6]:
i
0 0
1 1
1 1
5 5
dtype: int64

这与您的输出匹配。您可以将数组分配给列,只要数组/列表的长度与框架相同(否则您将如何对齐它?)

In [14]: grid[keys]
Out[14]: array([10, 11, 11, 15])

In [15]: df['j'] = grid[df['i'].values]


In [17]: df
Out[17]:
i j
0 0 10
1 1 11
2 1 11
3 5 15

关于python - Panda-Column 作为 numpy 数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23655080/

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