python - 迭代多个数据帧并执行数学函数保存输出
问题描述
我有几个数据框,我在其上执行相同的功能 - 为特定列(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 循环函数,它将我的中值输出作为列表中每个数据帧的系列分别生成,然后我可以为均值等执行此操作。
非常感谢您的帮助!
解决方案
首先,df+'regmedian' = ...
不是有效的 Python 语法。您正试图为表单的表达式赋值A + B
,这就是 Python 抱怨您试图重新定义+
.
而且,df+'regmedian'
它本身似乎很奇怪。您正在尝试添加一个 DataFrame 和一个字符串。
跟踪不同数据场的不同统计数据的一种方法是使用字典。例如,您可以替换
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')
推荐阅读
- selenium - 如何获取下拉列表中所有选项的所有计数?
- html - 属性的 PhpStorm HTML 缩进
- python - How to compile a Python script into a Unix executable and make it unreadable?
- html - 为什么垂直对齐 CSS 属性不起作用并且没有将跨度放在其父级的中间高度?
- java - 将访问令牌存储在 OAuth2.0 应用程序中并重复使用直到过期?
- php - PHP - substr() 错误或无效参数
- xamarin.forms - 简单的 Odata 客户端使用身份验证不工作的 Odata
- reactjs - react native订阅监听器的通用解决方案
- r - 将常数添加到向量中的几个值 - R
- android - 对 Json 数据进行改进的 Android 身份验证