【问题标题】:Reading more than one dataframe from a function从一个函数中读取多个数据帧
【发布时间】:2021-12-07 03:43:49
【问题描述】:

我编写这些代码是为了阅读 Datastes:

import pandas as pd
import pathlib

def load_coordinates(structure,segments:None):
       
    filedir = pathlib.Path(__file__).parent.parent / "data" / structure
    filepath = filedir / f"coordinates_{structure}.csv"
    return pd.read_csv(filepath, sep=";")
    if segments:
        return df.loc[df.segment.isin(segments)].reset_index(drop=True)
    else:
        return df

def load_population(structure,segments:None):
    
    filedir = pathlib.Path(__file__).parent.parent / "data" / structure
    filepath = filedir / f"population_{structure}.csv"
    return pd.read_csv(filepath, sep=";")
    return df.loc[df.segment.isin(segments)].reset_index(drop=True)
    else:
        return df

def load_ambul_praxen(structure,segments=None):
  
    filedir = pathlib.Path(__file__).parent.parent / "data" / structure
    filepath = filedir / f"ambul_praxen_{structure}.csv"
    return pd.read_csv(filepath, sep=";").drop(columns=["planet"])
    return df.loc[df.segment.isin(segments)].reset_index(drop=True)
    else:
        return df

def load_docs_matrix(structure, docs_selection, sum_up_vo):
    
    filedir = pathlib.Path(__file__).parent.parent / "data" / structure
    filepath = filedir / f"docs_matrix_{structure}.csv"
    return pd.read_csv(filepath, sep=";")

    selected_cols = ["segment"] + docs_selection
    df = df.loc[:, selected_cols]
    if sum_up_vo:
        df["vo"] = df[docs_selection].sum(axis=1)
        df = df.drop(columns=docs_selection)

    return df
def load_weights(structure, request, segments=None, docs_selection=None, sum_up_vo=None):
    if request == "population":
        return load_population(structure)
    elif request == "ambul_praxen":
        return load_ambul_praxen(structure)
    else:
        return load_docs_matrix(structure)
def load_data(structure, request, segments=None, docs_selection=None, 
       sum_up_vo=None):
coordinates = load_coordinates(structure)
weights = load_weights(structure, request, segments, docs_selection, sum_up_vo)

return coordinates.merge(weights, on="segment", how="inner")

在调用函数之前,我想补充一下:

if segments:
        return df.loc[df.segment.isin(segments)].reset_index(drop=True)
    else:
        return df

def load_docs_matrix函数

I called the function like this:

request = "ambul_praxen"
structure = "1868"

load_data(structure,request,
          load_coordinates,
          load_ambul_praxen,
          load population,
          load_weights)

我想要实现的是将所有数据集放在一个带有load data function 的数据框中。调用该函数后,我得到一个错误,我给出了 7 个参数,但预期为 5 个。我试图调整参数,但似乎不工作。

知道如何解决这个问题吗?

【问题讨论】:

  • 不是很清楚预期的输出是什么,你能澄清一下吗?
  • @fbence,我想用最后一个函数从模型中加载完整的数据集并调用它

标签: python function parameter-passing


【解决方案1】:

我不确定我是否理解了这个问题,但如果您只想调用这些读取数据框的函数,只需:

def load_data(input_df, structure, request):
    coordinates = load_coordinates(structure)
    population = load_population(structure)
    ambul_praxen = load_ambul_praxen(structure)
    docs_matrix = load_docs_matrix(structure)
    weighs = load_weights(structure,request)

    #Maybe concatenate them horizontally?
    return pd.concat([coordinates,population,ambul_praxen,docs_matrix,weighs],axis=1) 

或者只是一一归还……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2022-12-21
    • 2022-08-12
    • 2022-08-06
    • 1970-01-01
    • 2021-03-22
    • 2016-03-29
    • 2023-03-24
    相关资源
    最近更新 更多