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

如何将Pandas DataFrame转换为字符串构成的嵌套列表?

解决DataFrame转字符串嵌套列表的问题

我来帮你搞定这个需求!你想要把给定的两行DataFrame转换成全字符串组成的嵌套列表,但之前的循环方法没达到预期,问题出在遍历对象上——你遍历的是DataFrame的列,而不是行,所以输出的是每一列的元素列表,不是按行分组的结构。

先还原你的DataFrame结构

假设你的DataFrame是这样创建的:

import pandas as pd

data = {
    'date': ['2018-03-21', '2018-03-21'],
    'metric': ['cpu', 'cpu'],
    'stat': ['mean', 'std'],
    'val': [76.724406, 124.285789],
    'device': ['10.41.100.1', '10.41.100.1']
}
df = pd.DataFrame(data)

正确的两种实现方法

方法一:逐行转换为字符串列表(直观易懂)

用apply遍历每一行,先把该行所有元素转成字符串,再转成列表,最后把所有行的列表汇总成嵌套结构:

lis = df.apply(lambda row: row.astype(str).tolist(), axis=1).tolist()
print(lis)

输出结果完全符合你的要求:

[["2018-03-21", "cpu", "mean", "76.724406", "10.41.100.1"], ["2018-03-21", "cpu", "std", "124.285789", "10.41.100.1"]]

方法二:先全量转字符串再转列表(更简洁高效)

先把整个DataFrame的所有元素统一转成字符串类型,再用values.tolist()直接生成嵌套列表:

# 先将DataFrame所有元素转为字符串
df_str = df.astype(str)
# 转换为嵌套列表
lis = df_str.values.tolist()

这个方法逻辑更简单,处理大数据量时效率也更高。

为什么你的原代码没效果?

当你写for i in df时,i会依次取DataFrame的列名(date、metric、stat、val、device),所以df[i].tolist()会输出每一列的元素列表,最终得到的是5个独立的列列表,而不是按行分组的嵌套结构,这就和你的预期不符啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:04:32