如何将函数属性用作python对象以及字符串

时间:2018-11-15 13:47:15

标签: python python-3.x pandas

基本上,我的代码看起来像这样,并带有一些日志记录:

df_name.to_sql('df_name', engine, index=False)

我想做的是将其包装到一个函数中,并两次使用df_name

def df_2_sql(df):
   df.to_sql(f'{df}', engine, index=False)

df_list = [df_table_a, df_table_b, df_table_c]

for df in df_list: 
    df_2_sql(df)

...我期望f'{df}'可以工作,但可惜没有。我想将df_list用作pandas对象以及to_sql()函数中表名的一部分。

我已经尝试使用两个列表

df_list = [df_table_a, df_table_b, df_table_c]
df_list = ['df_table_a', 'df_table_b', 'df_table_c']

..和一个需要两个参数的函数,但感觉不正确或不明智。我究竟做错了什么?

1 个答案:

答案 0 :(得分:3)

使用字典

将变量名转换为字符串不是一个好主意。如果需要此功能,请构造字典并将键值对输入到函数中:

def df_2_sql(df, name):
   df.to_sql(name, engine, index=False)

df_dict = {'df_table_a': df_table_a,
           'df_table_b': df_table_b,
           'df_table_c': df_table_c}

for name, df in df_dict.items():
    df_2_sql(df, name)

如果这看起来很冗长且效率低下,请注意,您必须在代码某处的前面定义df_table_adf_table_b等。只需从一开始就使用字典并分配给df_dict['df_table_a']df_dict['df_table_b']等。