gpt4 book ai didi

python - 从 Pandas 列中提取单个值

转载 作者:太空狗 更新时间:2023-10-29 21:24:26 27 4
gpt4 key购买 nike

我有一个关于提取单个列值的简单 pandas 问题

df = DataFrame({'A' : [15,56,23,84], 'B' : [10,20,33,25]})
df

A B
0 15 10
1 56 20
2 23 33
3 84 55

x = df[df['A'] == 23]
x

输出

    A    B
2 23 33

但是,我只想获取 B 列中的值,即 33。我如何获取该值?

最佳答案

我的首选方法是 Jeff 使用 loc(避免处理副本通常是一种很好的做法,尤其是当您稍后可能会进行赋值时)。

您可以通过不为 bool 掩码创建系列来获得更多性能,只需创建一个 numpy 数组:

df = pd.DataFrame(np.random.randint(1, 100, 2000).reshape(-1, 2),
columns=list('AB'))

In [21]: %timeit df.loc[df.A == 23, 'B']
1000 loops, best of 3: 532 µs per loop

In [22]: %timeit df['B'][df.A == 23]
1000 loops, best of 3: 432 µs per loop

In [23]: %timeit df.loc[df.A.values == 23, 'B'] # preferred
1000 loops, best of 3: 294 µs per loop

In [24]: %timeit df['B'].loc[df.A.values == 23]
1000 loops, best of 3: 197 µs per loop

我不确定为什么这么慢,也许这个用例可以改进......? (我不确定这额外的 100us 花在了哪里)...

但是,如果您只对 B 的感兴趣,而不是它们对应的索引(和子帧),那么直接使用 numpy 数组会快得多:

In [25]: %timeit df.B.values[df.A.values == 23]
10000 loops, best of 3: 60.3 µs per loop

关于python - 从 Pandas 列中提取单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923524/

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