gpt4 book ai didi

python - Pandas 'bool object is not callable'

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

我有一个包含多个列的数据框,我试图将它按列分组并根据另一列对其进行排序。如果我像这样应用 groupby() :

data.groupby(columnA)

它不会吐出任何错误,但如果我尝试这样排序:

data.groupby(columnA).sort(coulmnB)

它给了我

TypeError: 'bool' object is not callable

我在任何列中都没有任何 bool 对象,并且完全不知道为什么会出现此错误。我将如何解决这个问题?如果我完全做错了,那么根据两个不同的列对 DataFrame 进行分组和排序的另一种方法是什么?提前致谢。

最佳答案

由于您希望先按列 A 再按列 B 进行排序,您可以使用 sort_values 来完成此操作仅:

# using jezrael's example
In [11]: data.sort_values(["columnA", "columnB"])
Out[11]:
columnA columnB columnC
4 1 2 8
0 1 7 7
5 2 4 0
1 2 5 8
3 3 1 1
2 3 6 9

In [12]: data.sort_values(["columnA", "columnB"], ascending=[True, False])
Out[12]:
columnA columnB columnC
0 1 7 7
4 1 2 8
1 2 5 8
5 2 4 0
2 3 6 9
3 3 1 1

注意:sort 是 groupby 的( bool )属性,这就是它不能被调用的原因:

In [21]: data.groupby("columnA").sort
Out[21]: True

In [22]: data.groupby("columnA", sort=False).sort
Out[22]: False

In [23]: True()
TypeError: 'bool' object is not callable

您可以通过以下示例了解它在内部执行的操作:

In [31]: df = pd.DataFrame([["b", 1], ["a", 2]], columns=["A", "B"])

In [32]: df.groupby("A").sum()
Out[32]:
B
A
a 2
b 1

In [33]: df.groupby("A", sort=False).sum()
Out[33]:
B
A
b 1
a 2

注意:不能保证这种行为/排序,它只是意味着 pandas 不会特意对 groupby 键进行排序...例如对于某些索引类型,它可能会排序:

In [34]: df.groupby("B", sort=False).sum()
Out[34]:
A
B
1 b
2 a

关于python - Pandas 'bool object is not callable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37781415/

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