对Pandas DataFrame执行explode时出现ValueError: column must be a scalar错误
问题:Pandas explode报错
ValueError: column must be a scalar 执行explode操作时触发上述错误,操作前的DataFrame如下:
Acc # Match Length Gene Identity (%) 0 CP034360.1 [312] [b4172] [88.462] 1 CP098173.1 [1655, 180] [rne, rne] [84.955, 85.556] 2 NTCW01000078.1 [986] [recA] [90.974] 3 NZ_JASISD010000003.1 [312] [b4172] [88.462] 4 PEGY01000004.1 [1619, 183] [rne, rne] [85.238, 85.246] 5 PEHS01000009.1 [312] [b4172] [87.500] 6 PEHS01000011.1 [1608] [rne] [85.759] 7 PEHV01000004.1 [1014] [recA] [90.335] 8 PEHV01000005.1 [2417] [gyrB] [88.746] 9 PEHV01000008.1 [312] [b4172] [87.500] 10 VOOC01000097.1 [2423] [gyrB] [88.816]
报错命令:
b_df.explode(['Match Length', 'Gene', 'Identity (%)'])
解决思路
- 错误根本原因:你的Pandas版本低于1.3.0。
explode支持传入多列列表是1.3.0版本才新增的功能,低版本仅接受单个列名(标量),传列表就会触发column must be a scalar错误。
方案1:升级Pandas版本
执行以下命令升级到支持多列explode的版本:
pip install --upgrade pandas
升级后直接运行你原来的代码即可正常执行,会同时将指定的多列按列表拆分。
方案2:兼容低版本的写法
如果无法升级版本,可对每一列依次执行explode:
b_df.explode('Match Length').explode('Gene').explode('Identity (%)')
⚠️ 注意:需确保每行的这三个列的列表长度完全一致,否则会出现数据错位问题(你的数据满足此条件,可安全使用)。
内容的提问来源于stack exchange,提问作者random
相关产品推荐
相关产品推荐

