Python 3.x TypeError:只有整数标量数组才能转换为标量索引
我正在尝试合并两个数据帧。以下是数据帧列的外观: toi_数据:Python 3.x TypeError:只有整数标量数组才能转换为标量索引,python-3.x,pandas,merge,Python 3.x,Pandas,Merge,我正在尝试合并两个数据帧。以下是数据帧列的外观: toi_数据: MultiIndex([( 'Player',), ( 'Pos',), ( 'Shift',), ( 'GP',), ( 'EV TOI',), ('EV CF% Rel',), ( 'EV GF/60',), (
MultiIndex([( 'Player',),
( 'Pos',),
( 'Shift',),
( 'GP',),
( 'EV TOI',),
('EV CF% Rel',),
( 'EV GF/60',),
( 'EV GA/60',),
( 'PP TOI',),
('PP CF% Rel',),
( 'PP GF/60',),
( 'PP GA/60',),
( 'SH TOI',),
('SH CF% Rel',),
( 'SH GF/60',),
( 'SH GA/60',),
( 'Year',),
( 'Team',)],
)
新的"基本法":
Index(['Player', 'Team', 'Year', 'Age', 'Pos', 'Country', 'Ht', 'Wt',
'Birth Date', 'Draft', 'S/C', 'Salary', 'Summary', 'GP', 'G', 'A',
'PTS', '+/-', 'PIM', 'EV', 'PP', 'SH', 'GW', 'EV.1', 'PP.1', 'SH.1',
'S', 'S%', 'TOI', 'ATOI', 'OPS', 'DPS', 'PS', 'BLK', 'HIT', 'FOW',
'FOL', 'FO%'],
dtype='object')
下面是我试图将两者合并的代码:
df2 = pd.merge(df1, toi_data, on=['Player', 'Team', 'Year'])
我得到的错误是:
TypeError: only integer scalar arrays can be converted to a scalar index
所以我的想法是toi_数据帧导致抛出错误。我曾尝试使用.unstack()和reset_index(inplace=True)转换多索引,但两者都不起作用。关于如何解决这个错误有什么想法吗?提前谢谢你 您可能希望在合并之前执行
toi_data.columns=toi_data.columns.drop_level(1)
。这个多索引是多余的,所以最好先弄清楚为什么要创建它,然后在那里修复它。谢谢你的评论@ALollz,不幸的是,当我尝试drop_level调用时,我遇到了这个错误indexer:级别太多:索引只有1个级别,而不是2个。这真的让我很困惑,因为第一个错误将DF称为多索引,但这个错误表示它只有1级…嗯。让我想想为什么会这样,为什么我不能移除它toi_data.columns=toi_data.columns.get_level_values(0)
在这种情况下应该是更好的选择,以使多索引平坦化。感谢您对@ALollz的快速响应。获得\u级别\u值(0)工作!非常感谢你!您可能希望在合并之前执行toi_data.columns=toi_data.columns.drop_level(1)
。这个多索引是多余的,所以最好先弄清楚为什么要创建它,然后在那里修复它。谢谢你的评论@ALollz,不幸的是,当我尝试drop_level调用时,我遇到了这个错误indexer:级别太多:索引只有1个级别,而不是2个。这真的让我很困惑,因为第一个错误将DF称为多索引,但这个错误表示它只有1级…嗯。让我想想为什么会这样,为什么我不能移除它toi_data.columns=toi_data.columns.get_level_values(0)
在这种情况下应该是更好的选择,以使多索引平坦化。感谢您对@ALollz的快速响应。获得\u级别\u值(0)工作!非常感谢你!