python 将变量名传递给函数

python passing variable name to function

我有各种 pd.DataFrame 想通过将它们传递给函数来写入 hdf store。有没有一种方法可以根据任何给定 dataframe 的变量名称以编程方式生成 key 名称?

from sklearn import datasets
import pandas as pd
df1 = pd.DataFrame(datasets.load_iris().data)
df2 = pd.DataFrame(datasets.load_boston().data)

def save_to_hdf(df1):
    with pd.HDFStore('test.h5') as store:
        store.put('df1', df1)

save_to_hdf(df1)

你应该像 np.savez() 那样做:

def save_to_hdf(filename, **kwargs):
    with pd.HDFStore(filename) as store:
        for name, df in kwargs.items():
            store.put(name, df)

save_to_hdf('test.h5', df1=df1, another_name=df2)

这样效率更高:只需要打开文件一次,就可以写入任意数量的数组。您可以使用与变量不同的名称。

您可以避免使用字典命名变量两次:

dfs = {
    'iris': pd.DataFrame(datasets.load_iris().data),
    'boston': pd.DataFrame(datasets.load_boston().data),
}
save_to_hdf('test.h5', **dfs)