Python:如何按行提取DataFrame除首列外的所有值及代码修正
问题解决:提取DataFrame除第一列外的所有值为一维列表
原代码的错误点
df.iterrows(0,1):iterrows()方法不接受参数,它默认遍历DataFrame的每一行,返回(行索引, 行数据)的元组values.Append(values):方法名拼写错误(应为小写append),且错误地将列表自身添加到列表中,逻辑完全错误- 未正确筛选每行中除第一列外的目标数据
修复后的循环实现(适合小数据集)
如果坚持用循环方式,修正后的代码如下:
import pandas as pd df = pd.DataFrame([['A', 2, 4, 7], ['B', 6, 1, 5], ['C', 4, 2, 2], ['D', 3, 9, 8]], columns = ["Pen", "A", 'B', 'C']) values = [] # 用_接收不需要的行索引,row是当前行的Series对象 for _, row in df.iterrows(): # 跳过第一列,将剩余值转成列表后批量加入结果 values.extend(row[1:].tolist()) print(values) # 输出:[2, 4, 7, 6, 1, 5, 4, 2, 2, 3, 9, 8]
高效实现(适合大型DataFrame)
对于大型数据集,循环遍历效率极低,推荐使用Pandas的向量式操作:
import pandas as pd df = pd.DataFrame([['A', 2, 4, 7], ['B', 6, 1, 5], ['C', 4, 2, 2], ['D', 3, 9, 8]], columns = ["Pen", "A", 'B', 'C']) # 选取所有行、从第二列开始的所有列 → 转成numpy数组 → 扁平化一维 → 转成Python列表 values = df.iloc[:, 1:].values.flatten().tolist() print(values) # 输出:[2, 4, 7, 6, 1, 5, 4, 2, 2, 3, 9, 8]
内容的提问来源于stack exchange,提问作者MARCOS SANTOS
相关产品推荐
相关产品推荐

