You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中将多列表合并为单列表并适配df.loc使用?

解决Pandas中TypeError: unhashable type: 'list'的问题

错误原因

你当前的all_accounts是嵌套列表结构——里面直接把assets、liabilities这些列表变量塞了进去,导致df.loc接收的列参数包含子列表。而Pandas要求列索引必须是可哈希的单个字符串,列表是不可哈希类型,因此触发报错。

正确的列表合并方式

要把所有账户列表整合成扁平的字符串列表,以下几种方法都适用:

方法1:列表加法拼接

适合少量列表变量的场景:

df = pd.read_csv('2021BALANCE.csv')
menor = (df['account_1'] < 10000)

assets = ['account_1', 'account_2', 'account_3']
liabilities = ['account_6' , 'account_4']
profits = ['account_20' , 'account_21']

# 用+号把所有列表拼接成扁平列表
all_accounts = ['account_9345', 'account_234623'] + assets + liabilities + profits

# 正常调用df.loc
df.loc[menor, all_accounts]

方法2:扩展解包语法(*)

适合大量列表变量的场景,写法更简洁:

# 用*把每个列表展开后合并
all_accounts = ['account_9345', 'account_234623', *assets, *liabilities, *profits]

方法3:批量处理大量列表变量

如果有几十上百个这类账户列表变量,可以先把它们统一放到一个容器里,再用itertools.chain合并:

import itertools

# 把所有账户列表变量放到一个大列表里
all_account_groups = [assets, liabilities, profits]
# 合并已有账户和所有分组账户
all_accounts = ['account_9345', 'account_234623'] + list(itertools.chain(*all_account_groups))

注意事项

合并后的all_accounts必须是纯字符串列表,要确保所有账户名称都存在于DataFrame的列名中,否则会触发KeyError。

内容的提问来源于stack exchange,提问作者Jorge Villa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:25:20