【发布时间】:2020-09-20 00:20:41
【问题描述】:
我是 pandas 的初学者,在这里发帖寻求帮助。 我在 Coursera 上做作业,做完之后我尝试搜索堆栈溢出以找到更紧凑和更快的代码。我在这里看到的东西我明白了,但是当我在 Google 上进行搜索时,我发现 pastebin 上的一些代码看起来好得令人难以置信。
在这里
def convert_housing_data_to_quarters():
data = pd.read_csv('City_Zhvi_AllHomes.csv')
towns = data[['State','RegionName']]
for yr in range(2000,2017):
for q in range(1,12,3):
if yr == 2016 and q == 4:
break
m1 = '{}-{:02d}'.format(yr,q)
m2 = '{}-{:02d}'.format(yr,q+1)
m3 = '{}-{:02d}'.format(yr,q+2)
quarter = '{}q{}'.format(yr,q)
towns[quarter] = data[[m1,m2,m3]].mean(axis=1)
return towns
任务是读取一个包含每个月数据的 .csv,并制作一个包含从 2001 年第一季度到每个季度末季度的数据框,其值是组成它的 3 个月的平均值。 我的解决方案非常正常,查看其他人为此作业编写的代码看起来几乎相似。
链接的代码适用于所有内容,除了它将列命名为 20xxq1、q4、q7 和 q10 而不是 q1、2、3、4。 我不明白第二个 for 循环中的代码是如何工作的。
这个语法是什么意思'{}-{:02d}'?我完全不明白,但它似乎非常强大。我很想知道将来如何使用它。我看到了 pandas 文档,它说你可以使用 dict 作为 .format() 的参数,但我真的不明白它是如何在这里工作的。
感谢您的帮助。
【问题讨论】: