是否有 Python 语法来创建具有函数调用的列表,该函数调用在列表名称中使用函数参数



老实说,我已经搜索了几个星期这个问题的答案,但还没有找到——我的搜索历史在这一点上是非常可耻的。也就是说,我对Python(以及一般编程(还很陌生,所以我的问题可能只是措辞不正确,而且以前也有人回答过——如果是这样的话,我很抱歉。

当一个函数运行时,我试图创建一个列表,该函数使用了创建列表名称中函数的参数,但我运气不佳。

所用数据示例:

Station Date    Tmax    Tmin    Tavg    DewPoint    WetBulb Heat    CodeSum PrecipTotal ... Mist    Haze    Rain    Thunderstorm    Fog Patches Drizzle Smoke   Squall  NoLoggedCodes
0   1   5/1/2007    83  50  67  51  56  0   NO  0.0 ... 0   0   0   0   0   0   0   0   0   1
1   1   5/2/2007    59  42  51  42  47  14  BR  0.0 ... 1   0   0   0   0   0   0   0   0   0
2   1   5/3/2007    66  46  56  40  48  9   NO  0.0 ... 0   0   0   0   0   0   0   0   0   1
3   1   5/4/2007    66  49  58  41  50  7   RA  0.0 ... 0   0   1   0   0   0   0   0   0   0
4   1   5/5/2007    66  53  60  38  49  5   NO  0.0 ... 0   0   0   0   0   0   0   0   0   1

我知道下面显示的是错误的语法,但希望它能让我了解我正在尝试的内容。函数本身(除了添加的语法错误之外(可以正常工作,但我的目标是让它也创建一个新列的列表,并且最好遵循下面显示的命名约定。有什么想法我能做到吗?

def rollingfunction(days):
"""creates new rolling mean columns for each weather station for each item in list Keys"""
WeatherCon{days}Day = [] #this line is incorrect, but I hope gives an idea of my goal
for x in Keys:
Station1[f'Last{days}DayAvg{x}'] Station1[x].rolling(days).mean()
Station2[f'Last{days}DayAvg{x}'] Station2[x].rolling(days).mean()
WeatherCon{days}Day.append([f'Last{days}DayAvg{x}']) #this line is also incorrect, but again context
#this is the list and list name that I want to create when the function is run with a call of 5. 
#This list is simply the names of the new columns created by the function so I can reference these columns later.
WeatherCon5Day = ['Last5DayAvgHaze', 'Last5DayAvgPrecipTotal', 'Last5DayAvgThunderstorm', 'Last5DayAvgFog', 'Last5DayAvgPatches', 'Last5DayAvgSmoke', 'Last5DayAvgSquall', 'Last5DayAvgNoLoggedCodes', 'Last5DayAvgTavg', 'Last5DayAvgAvgSpeed', 'Last5DayAvgDewPoint']

当为5调用该函数时,它会为Keys中的每个天气模式返回新的单独列。

目前,我正在使用这些新列对蚊子生长进行回归

理想情况下,我的最终目标是能够在15-20天左右的每一天内,对蚊子种群增长的所有天气值进行回归,然后用它创建一个显示系数和p值随时间变化的折线图,以突出显示每个值何时具有最大影响(如果有的话(。显然,调用rollingfunction((15次以上并手动创建15个以上的列表来获得所需的回归值是愚蠢的、容易出错的,而且很难看。此外,我还认识到,我正在尝试创建100多个新列,这可能也很愚蠢。

我真的很感激你们能给我的任何帮助,哪怕只是指给我正确的方向。非常感谢!

看看这些:

>>> locals()
>>> globals()
>>> dir()
>>> help(setattr)

在最后一个问题上,请注意,它接受字符串的初始参数。它将允许您将一个新变量绑定到你最喜欢的命名空间,也许是函数的本地命名空间。


也就是说,你在这里真正想要的为import pandas因此您可以利用数据帧。它们有很多功能满足您的需求。

最新更新