如何在Python中从Pandas DataFrame各列生成目标嵌套列表?
嘿,这个问题我碰到过!你现在得到的是按行排列的嵌套列表,而我们需要的是按列来聚合元素,其实只要把DataFrame的行和列转个向就行啦,给你几个简单的方法:
方法1:转置DataFrame后转列表
这是最直观的方式,先通过.T把DataFrame转置(列变行、行变列),再用.values.tolist()转成嵌套列表:
# 如果Date是普通列,先选中需要的列再转置 mylist = df[['A', 'B', 'C', 'D']].T.values.tolist() # 如果Date是索引,直接转置即可 mylist = df.T.values.tolist()
方法2:用apply遍历列转列表
可以用apply把每一列转换成列表,再整体转成嵌套列表:
mylist = df[['A', 'B', 'C', 'D']].apply(list).tolist()
df.apply(list)会把每一列都单独变成一个列表,最后.tolist()就把整个结构转成你要的嵌套格式啦。
方法3:借助NumPy数组转置
Pandas的.values本质是NumPy数组,我们可以直接对数组转置后再转列表:
mylist = df[['A', 'B', 'C', 'D']].values.T.tolist()
这个方法和第一种原理类似,只是直接操作底层的NumPy数组,处理大数据量时效率也不错。
举个实际运行的例子,用你给出的数据测试:
import pandas as pd # 构造你的DataFrame data = { 'Date': [1, 2, 3, 4], 'A': ['A1', 'A2', 'A3', 'A4'], 'B': ['B1', 'B2', 'B3', 'B4'], 'C': ['C1', 'C2', 'C3', 'C4'], 'D': ['D1', 'D2', 'D3', 'D4'] } df = pd.DataFrame(data) # 用方法1得到结果 mylist = df[['A', 'B', 'C', 'D']].T.values.tolist() print(mylist) # 输出:[['A1', 'A2', 'A3', 'A4'], ['B1', 'B2', 'B3', 'B4'], ['C1', 'C2', 'C3', 'C4'], ['D1', 'D2', 'D3', 'D4']]
完全符合你想要的嵌套列表格式~
内容的提问来源于stack exchange,提问作者Nowhere_Dev
相关产品推荐
相关产品推荐

