gpt4 book ai didi

python - Pandas 返回不一致的列值计数

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:10 27 4
gpt4 key购买 nike

我有一个名为“结果”的列,它包含 1 或 0。我想获取 1 和 0 的数量用于测试目的,但我得到了一些奇怪的结果。

我最初是这样的:

df.sort_values(by='results', axis=0, ascending=False, inplace=True) 

然后:

num_ones = df['results'].value_counts().values[1]
num_zeroes = df['results'].value_counts().values[0]
print("num_ones: " + str(num_ones))
print("num_zeroes: " + str(num_zeroes))

输出:

num_ones: 3610
num_zeroes: 51500

我立即看到值被翻转了。 num_ones 实际上保存了 0 的个数,反之亦然。

然后我做

df1 = df.loc[df['results'] == 1]
print('Ones: ' + str(df1.shape[0]))
df0 = df.loc[df['results'] == 0]
print('zeros: ' + str(df0.shape[0]))

输出:

Ones: 51500
zeros: 3610

结果是正确的。什么可能导致最初的方法不起作用?

我注意到这对于 <5k 行的较小数据集来说不是问题。

最佳答案

values[1] 获取索引1(第二个元素)可能不是1,这里是0,所以你需要像@WenYoBen 的回答那样做loc,或者一个条件:

>>> vc = df['result'].value_counts()
>>> vc[vc.index.eq(1)].item()
5
>>>

关于python - Pandas 返回不一致的列值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56980441/

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