Pandas中append方法弃用后,用concat无法获相同结果的问题
解决DataFrame append弃用后的替代方案
原代码与警告信息
原代码:
import pandas as pd my_columns = ['a', 'b','c', 'd'] df = pd.DataFrame(columns = my_columns) df = df.append(pd.Series([10, 20, 30, 'n/a'], index = my_columns), ignore_index = True)
收到的警告:
FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version.
预期输出
a b c d 0 10 20 30 n/a
替代方案
方案1:使用concat正确拼接
concat要求拼接对象为DataFrame类型,所以需要先将Series转为单行DataFrame,再执行拼接:
import pandas as pd my_columns = ['a', 'b','c', 'd'] df = pd.DataFrame(columns = my_columns) # 将Series转为单行DataFrame new_row = pd.Series([10, 20, 30, 'n/a'], index=my_columns).to_frame().T # 拼接并重置索引 df = pd.concat([df, new_row], ignore_index=True) print(df)
方案2:直接构造DataFrame(更高效)
如果仅添加单行或少量行,直接用数据列表构造DataFrame是更简洁高效的方式:
import pandas as pd my_columns = ['a', 'b','c', 'd'] # 直接传入行数据列表创建DataFrame df = pd.DataFrame([[10, 20, 30, 'n/a']], columns=my_columns) print(df)
补充说明
如果需要批量添加多行,建议先把所有行数据存入一个列表,最后一次性转换为DataFrame——避免多次调用concat(每次concat都会生成新的DataFrame对象,频繁操作会降低效率)。
内容的提问来源于stack exchange,提问作者stvlam22
相关产品推荐
相关产品推荐

