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

如何用concat替代append规避FutureWarning?concat报错TypeError原因及解决

问题:用concat替代append操作DataFrame时报错TypeError: unhashable type: 'DataFrame'

原本使用append方法操作DataFrame的代码运行正常:

DF= pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
DF = DF.append({'Col1': "A",  'Col2'  : 'B'  ,'Col3':  'C'},ignore_index=True)

尝试用concat替代append以避免FutureWarning,编写的代码如下:

DF= pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
DF = pd.concat([DF],pd.DataFrame({'Col1': ['A'],'Col2':['B'],'Col3':['C']}))

运行时抛出错误:

TypeError: unhashable type: 'DataFrame'

错误原因

pd.concat()的第一个参数必须是包含所有要合并对象的可迭代序列(比如列表),你错误地把第二个DataFrame作为独立参数传递给了concat,而不是将它和原DF一起放到列表里。

修正后的代码

把两个要合并的DataFrame都放进列表中,同时加上ignore_index=True参数(和原append行为保持一致,重置索引):

DF= pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
DF = pd.concat([DF, pd.DataFrame({'Col1': ['A'],'Col2':['B'],'Col3':['C']})], ignore_index=True)

补充说明

如果只是添加单行数据,也可以用pd.DataFrame.from_dict简化写法:

DF= pd.DataFrame(columns=['Col1', 'Col2', 'Col3'])
DF = pd.concat([DF, pd.DataFrame.from_dict({'Col1': "A", 'Col2': 'B', 'Col3': 'C'}, orient='index').T], ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:30:24