Python将函数应用于具有不同数据结构的多个数据框

时间:2020-11-08 18:54:21

标签: python pandas

我很欣赏这可能是一个愚蠢的问题。我有一个名为read_files()的函数,该函数读取两个熊猫数据帧,但是每个数据帧中的数据结构略有不同。因此,每个数据帧的标题,index_col,sheet_name等都不同。

有什么办法可以重写此函数,使其更短或更Pythonic?

  def read_files():
    input_location = r'C:\Users\name\Desktop\foobar\\'

    df1 = pd.read_excel(
                          input_location+'example1.xlsx', 
                          sheet_name='foo',
                          header=8,
                          index_col=2,
                       )
    
    df2 = pd.read_excel(
                          input_location+'example2.xlsx', 
                          header=11,
                          index_col=1,
                          skipfooter=10
                        )

    return df1, df2

1 个答案:

答案 0 :(得分:0)

例如,您可以将参数保存在以文件名作为键的字典中

df1 = pd.read_excel(input_location+'example1.xlsx', **read_excel_params['example1.xlsx'])
df2 = pd.read_excel(input_location+'example1.xlsx', **read_excel_params['example2.xlsx'])

然后致电

lo=input_location+'example1.xlsx

您可以在字典中以及input_location中保留第一个参数,但是在创建字典之前的适当时机,您需要小心初始化read_files()

可以在read_excel函数外部填充配置字典,并将其作为参数传递给该函数。您甚至还可以循环使用dict中的不同条目,并循环调用read_excel,而无需在函数中为每个文件显式调用 var names = mutableMapOf<String, MutableMap<String, MutableList<String>>>( "test" to mutableMapOf( "first" to mutableListOf( "Spongebob", "Patrick" ), "last" to mutableListOf( "Squarepants", "Star" ) ) )