Pandas DataFrame基于现有列名新建列并生成行列值组合列表
Pandas DataFrame行列转平铺列表实现方法
方法1:使用stack()(推荐,和示例输出顺序完全一致)
直接调用Pandas内置的stack()方法即可一行实现,默认保持行优先的遍历顺序,和你要求的输出格式完全匹配:
import pandas as pd # 示例DataFrame构建 index_col = ["store1", "store2", "store3"] cols = ["January", "February", "March"] values = [[2,3,4],[5,6,7],[8,9,10]] df = pd.DataFrame(values, index=index_col, columns=cols) # 核心转换代码 result = df.stack().reset_index().values.tolist()
打印result即可得到你需要的输出:
[['store1', 'January', 2], ['store1', 'February', 3], ['store1', 'March', 4], ['store2', 'January', 5], ['store2', 'February', 6], ['store2', 'March', 7], ['store3', 'January', 8], ['store3', 'February', 9], ['store3', 'March', 10]]
方法2:使用melt()(适合自定义列名场景)
如果需要自定义转换后的列名做后续处理,可以用melt方法,额外加排序即可匹配示例顺序:
# 转换代码 result = df.reset_index(names='store')\ .melt(id_vars='store', var_name='month', value_name='sales')\ .sort_values('store')\ .values.tolist()
内容的提问来源于stack exchange,提问作者Håkon
相关产品推荐
相关产品推荐

