如何分组动态列名列表?

时间:2018-01-08 21:15:23

标签: python pandas

我正在尝试修改一些代码以变得更加灵活。

这是woking代码:

git add

我想这样做,以便列名不是硬编码的。我得到了set_index片段,因为它只是一个字符串,但不知道如何处理该组。

这是我的部分解决方案:

df_out = pdf.set_index('TTF_WEEKS').groupby(['PRODUCT','COMMODITY_CODE','FISCAL_WEEK_ENDDATE'], group_keys=False).apply(lambda x: x.reindex(np.arange(pdf.TTF_WEEKS.min(),pdf.TTF_WEEKS.max()+1)))

我想我想要某种加入(伪代码)

col_cnt = len(list(pdf.columns.values))

df_out = pdf.set_index(pdf.columns[col_cnt-1]).groupby(['PRODUCT','COMMODITY_CODE','FISCAL_WEEK_ENDDATE'], group_keys=False).apply(lambda x: x.reindex(np.arange(pdf.TTF_WEEKS.min(),pdf.TTF_WEEKS.max()+1)))

我该怎么做?

编辑:好的,所以我靠近了,但现在收到错误:

for i in range(col_cnt-2):
    join( pdf.columns[i],',')

给出错误:

  

KeyError:“'PRODUCT','COMMODITY_CODE','FISCAL_WEEK_ENDDATE'”

1 个答案:

答案 0 :(得分:1)

从KeyError,我认为你正在构建一个由'PRODUCT','COMMODITY_CODE','FISCAL_WEEK_ENDDATE'组成的字符串。你真正需要的是col_grp包含一个字符串列表。

尝试替换

col_grp = "'" + "','".join(map(str, list(pdf.columns.values)[:col_cnt-2])) + "'"

使用

col_grp = df.columns.tolist()