如何将Pandas DataFrame的每一行转换为数组?
pandas将DataFrame每一行转换为数组/列表的实现方法
你可以根据自己使用的pandas版本和场景,选择以下任意一种方法实现,转换结果会保留原行的列顺序、数值(包括NaN、0值),完全匹配你给出的索引0行的预期输出效果:
- 推荐方法(pandas 0.24及以上版本通用)
用官方推荐的to_numpy()方法先转为numpy二维数组,再调用tolist()转为嵌套的Python列表,每个子列表对应原DataFrame的一行:
# 假设你的DataFrame存储在变量df中 row_list = df.to_numpy().tolist() # 验证索引0的行,输出为 [1.0, 2.0, 3.0, 4.0, 95.0, 96.0, 97.0, 98.0] print(row_list[0])
- 逐行处理场景适用方法
如果你需要在转换过程中对每行做自定义处理(比如过滤空值、类型转换),可以用apply沿行方向遍历转换:
# 基础转换 row_list = df.apply(lambda row: row.tolist(), axis=1).tolist() # 如果需要过滤每行的NaN值,用这个写法即可 row_list_without_nan = df.apply( lambda row: [val for val in row if not pd.isna(val)], axis=1 ).tolist()
- 旧版本兼容写法
如果你使用的pandas版本低于0.24(无to_numpy()方法),可以直接用.values属性获取数组后转列表:
row_list = df.values.tolist()
注意:以上方法默认会严格按照DataFrame当前的列顺序拼接每行的值,如果你需要调整列顺序再转换,先做列筛选/排序即可。
内容的提问来源于stack exchange,提问作者SSS311
相关产品推荐
相关产品推荐

