【问题标题】:Iterate over multiple dataframes and perform maths functions save output迭代多个数据帧并执行数学函数保存输出
【发布时间】:2018-11-04 22:20:55
【问题描述】:

我有几个数据帧,我在这些数据帧上执行相同的功能 - 为特定列(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 循环函数,它分别为列表中的每个数据帧生成我的中值输出作为系列,然后我可以为均值等执行此操作。

非常感谢您的帮助!

【问题讨论】:

    标签: python loops variables for-loop dataframe


    【解决方案1】:

    首先,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')
    

    【讨论】:

    • 啊,是的,我需要更改为第三行的键,但效果很好,非常感谢您的帮助!我将输出存储在数据框中,而不是工作正常:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2017-06-26
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多