熊猫抱怨密钥错误,即使密钥存在

Pandas complaining about key error, even when key exists

提问人:user_04248753498 提问时间:11/14/2023 最后编辑:user_04248753498 更新时间:11/16/2023 访问量:35

问:

我有一个看起来像这样的数据帧:

数据帧

我想计算每个“运行”中特定“事件”的实例。我有以下 Pandas 代码

all_run_counts=all_data_df.sort_values('Event',ascending=False).groupby('Run')
    result=all_run_counts["Event"].value_counts()

它给了我一个数据框,可以计算每次“运行”中的每个“事件”,到目前为止一切都很好。

我多么想在每次运行中过滤特定的事件类型并计算该事件的实例,但是当我使用以下脚本进行过滤时,它不起作用,并且在明确“事件”已经作为列存在时给了我“事件”键错误:

    result.loc[result['Event'] == 'J']

这是什么原因?

我期望每个运行都按特定事件过滤,这样我就可以将相同事件类型的相应value_counts与各种运行进行比较。

Python pandas group-by

评论


答:

2赞 mozway 11/14/2023 #1

通过应用 和 ,您最终是一个 Series,而不是一个 DataFrame,因此不是一列,而是一个 MultiIndex 级别。groupbyvalue_countsresultEvent

您需要reset_index

result = all_run_counts["Event"].value_counts().reset_index()

注意这里并不是真的需要的,你可以直接使用value_countsgroupby

result = all_data_df.value_counts().reset_index()

评论

0赞 user_04248753498 11/15/2023
您的第一个选项可以解决问题。第二个没有给我事件列的值计数,而是按原样重新打印所有列,所以我相信我们确实需要指定我们想要value_count哪一列。
0赞 user_04248753498 11/15/2023
此外,当我在计算每次运行的每个事件的计数但将相同的事件组合在一起时,我得到result.groupby('Event')result = all_run_counts["Event"].value_counts().reset_index()<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f3729f7bb50>
0赞 mozway 11/15/2023
这是意料之中的,会产生一个 ,你必须在此步骤之后调用一个方法。groupbyDataFrameGroupBy