Python 使用format函数命名列

Python 使用format函数命名列,python,pandas,numpy,Python,Pandas,Numpy,下面的代码行采用表示每个月总销售额的列,并按季度平均销售额 mdf = tdf[sel_cols].resample('3M',axis=1).mean() 我需要做的是用str(不能使用pandas.Period函数)为列命名 我试图使用以下代码,但无法使其正常工作 mdf = tdf[sel_cols].resample('3M',axis=1).mean().rename(columns=lambda x: '{:}q{:}'.format(x.year, [1, 2, 3, 4][x.

下面的代码行采用表示每个月总销售额的列,并按季度平均销售额

mdf = tdf[sel_cols].resample('3M',axis=1).mean()
我需要做的是用str(不能使用pandas.Period函数)为列命名

我试图使用以下代码,但无法使其正常工作

mdf = tdf[sel_cols].resample('3M',axis=1).mean().rename(columns=lambda x: '{:}q{:}'.format(x.year, [1, 2, 3, 4][x.quarter==1]))
我想让专栏读。。。2000q1,2000q2,2000q3,2000q4,2001q1,。。。等等,但不断出现错误,比如2000q1、2000q1、2000q1、2000q2、2001q1


如何使用.format函数使其正常工作。

最简单的方法是在datetime列表上执行quarter函数,如下所示

mdf = tdf[sel_cols].resample('3M',axis=1).mean().rename(columns=lambda x: '{:}q{:}'.format(x.year,x.quarter))

[1,2,3,4][x.quarter==1]
这将只返回
1
2
x.quarter==1
将始终计算为
True
False
,这将分别转换为列表的索引
1
0
。@0x5453 ok,这是有意义的。是否有任何方法可以使该值一直计算到1-4,直到列用完?可以包含哪些值?如果已在1-4范围内格式化,则可以使用
x.quarter
。如果是递增计数,您可能会执行
[1,2,3,4][x.quarter%4]
。很难说没有看到任何示例数据。@0x5453这几乎有效。它导致的唯一问题是它从2000q2开始。如何将[x.quarter%4]编码为从[0]开始打印2000q1。@0x5453 aslo x是2000年到2016年之间基本上每月的日期时间列表