我有几个数据帧,我执行相同的功能 - 提取特定列(PurchasePrice)的平均值,几何,中位数等,由另一列(GORegion)中的组组织。目前我只是为每个数据帧单独执行此操作,因为我无法解决如何在for循环中执行此操作并为每个数据帧执行的每个函数保存单独的数据系列。
即。我执行这样的中位数:
regmedian15 = pd.Series(nw15.groupby(["GORegion"])['PurchasePrice'].median(), name = "regmedian_nw15")
我想为数据帧[nw15, nw16, nw17]
列表执行此操作,为每个数据帧提取相同的变量输出。
我尝试过这样的事情:
listofnwdfs = [nw15, nw16, nw17]
for df in listofcmldfs:
df+'regmedian' = pd.Series(df.groupby(["GORegion"])
['PurchasePrice'].median(), name = df+'regmedian')
但它说“无法分配给运营商”
我认为重点是我无法弄清楚如何使用我输入到for循环中的数据帧的名称来创建单独的输出变量名称。我只想要一个for循环函数,它将我的中值输出分别生成列表中每个数据帧的一系列,然后我可以用手段等来做这个。
非常感谢你的帮助!
答案 0 :(得分:0)
首先,df+'regmedian' = ...
不是有效的Python语法。您正在尝试为A + B
形式的表达式赋值,这就是为什么Python抱怨您试图重新定义+
的含义。
此外,df+'regmedian'
本身似乎很奇怪。您正在尝试添加DataFrame和字符串。
跟踪不同数据农场的不同统计数据的一种方法是使用dicts。例如,您可以替换
listofnwdfs = [nw15, nw16, nw17]
与
dict_of_nwd_frames = {15: nw15, 16: nw16, 17: nw17}
假设您要为每个帧存储'regmedian'
个数据。你也可以用dicts做到这一点。
data = dict()
for key, df in dict_of_nwd_frames.items():
data[(i, 'regmedian')] = pd.Series(df.groupby(["GORegion"])['PurchasePrice'].median(), name = str(key) + 'regmedian')