python将变量名称传递给函数

时间:2018-02-17 01:48:55

标签: python function pandas dataframe eval

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

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)

1 个答案:

答案 0 :(得分:1)

你应该像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)

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

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

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