如何创建带指定列名的空Pandas DataFrame并添加数据行
问题解答
1. 创建带指定列名的空Pandas DataFrame
你编写的第一行代码本身是正确的,直接给pd.DataFrame指定columns参数即可实现需求:
import pandas as pd data_set = pd.DataFrame(columns=['POST_TEXT', 'TARGET'])
2. 为已创建的DataFrame添加一行数据
错误原因
你原代码data_set[data_set.shape[0]] = ['Today is a great day!', '1']的写法不符合Pandas的索引规则:Pandas中直接使用df[参数]的写法默认是操作列,因此你这行代码实际是新增了一列名为0的列,而非新增一行,这就是运行结果不符合预期的原因。
正确写法
方法1:用loc按行索引赋值(适合少量单行添加场景)
loc是Pandas专门用于按行标签取数/赋值的接口,直接定位到末尾的新行赋值即可:
# len(data_set) 和 data_set.shape[0] 效果一致,都可以获取当前DataFrame的行数,对应新行的索引值 data_set.loc[len(data_set)] = ['Today is a great day!', '1']
方法2:用pd.concat拼接(官方推荐,适配Pandas 2.0+版本,适合批量添加行场景)
先将待添加的数据转为单行DataFrame,再和原DataFrame拼接即可,ignore_index=True参数会自动重置行索引避免冲突:
# 构造待添加的行 new_row = pd.DataFrame([['Today is a great day!', '1']], columns=data_set.columns) # 拼接数据 data_set = pd.concat([data_set, new_row], ignore_index=True)
内容的提问来源于stack exchange,提问作者hyper-cookie
相关产品推荐
相关产品推荐

