【问题标题】:Mutate multiple pandas dataframe inplace using a function使用函数就地改变多个熊猫数据框
【发布时间】:2022-11-02 16:22:57
【问题描述】:

我想编写一个函数,该函数采用具有相同结构的多个数据帧,进行特定的转换并将转换保存在原地。

虚拟数据帧

df = pd.DataFrame({"Full name" : ["John Doe","Deep Smith","Julia Carter","Kate Newton","Sandy Thompson"], 
                     "Monthly Sales" : [25,30,35,40,45]}) 

df2 = pd.DataFrame({"Full name" : ["Alicia Williams","Kriten John","Jessica Adams","Isaac Newton","Whitney Gordon"], 
                     "Monthly Sales" : [35,20,50,15,40]})

转化功能

我不想返回数据框,而是将这些转换保存到位。

def tidy_dfs(dfs):
    for df in dfs:
        # Drop first row
        df = df.iloc[1: , :]
        # Replace spaces in columns
        df.columns = [c.replace(' ', '_') for c in df]
        # change cols to lower
        df.columns = [c.lower() for c in df]
    return df

保存df,df2 = tidy_dfs([df,df2]) 当然不会工作,因为我们在循环之外。

结果调用此函数并保存转换的方法是什么?

tidy_dfs([df,df2])

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您的函数不返回 DataFrame 列表,因此您需要创建空列表并 append 清理 DataFrame:

    def tidy_dfs(dfs):
        out = []
        for df in dfs:
            # Drop first row
            df = df.iloc[1: , :]
            # Replace spaces in columns
            df.columns = [c.replace(' ', '_') for c in df]
            # change cols to lower
            df.columns = [c.lower() for c in df]
            out.append(df)
        return out
    

    【讨论】:

    • 据我了解,提问者是否希望将其放置到位?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多