为了账号安全,请及时绑定邮箱和手机立即绑定

值错误:无法使用分组拆分的数据帧将输入数组从形状 (2) 广播到形状 (0)

值错误:无法使用分组拆分的数据帧将输入数组从形状 (2) 广播到形状 (0)

慕神8447489 2022-09-06 16:30:06
    以下函数是包的一部分。socceractionimport pandas as pdfrom typing import List,Callabledef gamestates(actions : pd.DataFrame, nb_prev_actions: int =3) -> List[pd.DataFrame]:    states = [actions]    for i in range(1, nb_prev_actions):        prev_actions = actions.copy().shift(i, fill_value=0)        prev_actions.loc[: i - 1, :] = pd.concat([actions[:1]] * i, ignore_index=True)        states.append(prev_actions)    return states我试图将其应用于后续的数据框组,如下所示。dfdf = {'half_id': {1: '1', 36: '1', 259: '1', 314: '1', 324: '1', 335: '1', 798: '1', 834: '1', 906: '1',                   1114: '1', 1170: '1', 1354: '1', 1494: '1', 1588: '2', 1688: '2', 2190: '2', 2227: '2',                   2435: '2', 2734: '2', 2838: '2'},       'variable': {1: 1.0, 36: 1.0, 259: 1.0, 314: 1.0, 324: 1.0, 335: 1.0, 798: 1.0, 834: 1.0, 906: 0.0,                    1114: 1.0, 1170: 0.0, 1354: 0.0, 1494: 1.0, 1588: 1.0, 1688: 1.0, 2190: 0.0, 2227: 1.0,                    2435: 1.0, 2734: 1.0, 2838: 1.0}}df = pd.DataFrame.from_dict(df)for _, half in df.groupby('half_id'):     game_states = gamestates(half, 3)当我调用不在拆分但原始 DataFrame 上的函数时,问题不会持续存在:gamestates(df, 3)错误似乎在方法上被提出,同时将函数的输出分配给变量。但是我挠挠头为什么,找不到原因,可能在这里错过了一些明显的东西。说实话,关于广播阵列的信息对我来说是不清楚的。所以我的问题是:这个错误的原因是什么?使用数据框进行拆分与原始拆分数据有何不同?setitemgamestatesgame_statesValue Errorgroupby
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

拆分和原始 DataFrame 本身没有什么不同(显然,除了第一个是第二个数据的子集):


frames = [f for _,f in df.groupby('half_id')]

type(frames[0]) == type(df) #  True (both are of the type pandas.core.frame.DataFrame)

使用第二个拆分数据帧进行调用时发生此错误,即,因为您正在尝试将形状 (2,2) 的数据帧分配给以下行中形状 (0,2) 的数据帧切片(当):gamestatesgamestates(frames[1], 3)i == 2


prev_actions.loc[: 1, :] = pd.concat([actions[:1]] * 2, ignore_index=True)

我不太确定代码的目的是什么,但请注意,使用标签提供访问权限,并且由于中的最低标签是1588,因此将导致空切片。.locframes[1]prev_actions.loc[: 1, :]


使用原始 DataFrame 时不会发生错误的原因是,这包括标签 1,它阻止了空切片。对我来说,对于给定的函数,数据结构似乎不正确。df


查看完整回答
反对 回复 2022-09-06
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号