如何将嵌套列表转为DataFrame并保持格式导出为CSV文件
解决方案
你的原代码逻辑存在问题:通过zip(data[0:10], data[10:20])将前10个元素与第10-20个元素配对再转置,这种方式仅在取固定数量元素时巧合符合预期,无法适配30个元素的完整数据。
根据你“每个子元素各占一行”的需求,以下是几种常见场景的实现代码:
场景1:每个子元素单独占一行(共60行,每行一个值)
如果希望把每个嵌套的子元素单独作为CSV的一行,可先扁平化列表再构造DataFrame:
import pandas as pd # 扁平化嵌套列表,提取所有子元素 flat_data = [sub_item for item in data for sub_item in item] # 构造DataFrame并导出 df = pd.DataFrame(flat_data, columns=["子元素值"]) # 替换为你需要的列名 df.to_csv('GFG.csv', mode='w', index=False, header=True)
场景2:每个原始元素的两个子元素作为一行的两列(共30行,每行两列)
如果希望保留原始元素的结构,将两个子元素作为同一行的两列:
import pandas as pd # 直接用嵌套列表构造DataFrame,指定列名 df = pd.DataFrame(data, columns=headers) # headers是你定义的列名列表,如["列1", "列2"] df.to_csv('GFG.csv', mode='w', index=False, header=True)
场景3:区分子元素类型的分行格式
如果需要明确区分每个子元素是原始元素的第一个还是第二个,可将列转行:
import pandas as pd # 先构造含两列的DataFrame df = pd.DataFrame(data, columns=["子元素1", "子元素2"]) # 将列转为行,保留子元素类型标识 df = df.melt(var_name="子元素类型", value_name="值") df.to_csv('GFG.csv', mode='w', index=False, header=True)
内容的提问来源于stack exchange,提问作者SS1
相关产品推荐
相关产品推荐

