首页 > 解决方案 > 以编程方式为 pd.melt 选择列

问题描述

致力于自动化月度报告。试图找到一种替代方法,而不是在 pandas 融化函数中手动输入列id_varsvalue_vars。是否可以以编程方式执行此操作?

考虑一个具有列 a、b、c、'12/01/2018'、'12/02/2018'、'12/03/2018' 等的 df,其中 a、b、c 始终是id_vars日期和每日日期给定月份(在这种情况下为 12 月)value_vars将被取消透视。而不是写出来

pd.melt(id_vars=['a','b','c'],value_vars=['12/01/2018', 
'12/02/2018','12/03/2018', etc.])

是否可以以编程方式将 value_vars 分配给 melt 函数,以便每个月都可以使用相同的代码?(一月将有 31 天的时间来取消转轴,但二月将有 28 天)。

我不是 pythonista,感谢您花时间帮助我解决这个问题。

标签: pythonpandas

解决方案


您可以使用:

df.melt(['a','b','c'])

df.melt 的文档字符串状态:

value_vars :元组、列表或 ndarray,可选 Column(s) 以取消透视。如果未指定,则使用所有未设置为 的列id_vars

因此,您已将 id_vars 设置为他的第一个参数,并且所有其他列将用作每个文档的 value_vars。


推荐阅读