提问人:user_04248753498 提问时间:11/14/2023 最后编辑:user_04248753498 更新时间:11/16/2023 访问量:35
熊猫抱怨密钥错误,即使密钥存在
Pandas complaining about key error, even when key exists
问:
我有一个看起来像这样的数据帧:
我想计算每个“运行”中特定“事件”的实例。我有以下 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与各种运行进行比较。
答:
2赞
mozway
11/14/2023
#1
通过应用 和 ,您最终是一个 Series,而不是一个 DataFrame,因此不是一列,而是一个 MultiIndex 级别。groupby
value_counts
result
Event
您需要reset_index
:
result = all_run_counts["Event"].value_counts().reset_index()
注意这里并不是真的需要的,你可以直接使用value_counts
:groupby
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
这是意料之中的,会产生一个 ,你必须在此步骤之后调用一个方法。groupby
DataFrameGroupBy
评论