【问题标题】:Python Functions: Pass parameter as string and reference?Python 函数:将参数作为字符串和引用传递?
【发布时间】:2023-02-04 02:28:02
【问题描述】:
我脑子里有个结。我什至不确定要用谷歌搜索什么。 (或者如何制定我的标题)
我想执行以下操作:我想编写一个函数,该函数采用以 .csv 名称出现的术语,但同时我希望 df 以它命名。
像这样:
def read_data_into_df(name):
df_{name} = pd.read_csv(f"file_{name}.csv")
当然 df_{name} 部分不起作用。但我希望你能明白。
如果没有硬编码,这可能吗?
谢谢!
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
IIUC,你可以使用globals:
def read_data_into_df(name):
globals()[f"df_{name}"] = pd.read_csv(f"file_{name}.csv")
【解决方案2】:
如果我是你,我会创建一个字典并创建键
dictionary = f"df_{name}: {whatever_you_want}"
【解决方案3】:
如果只有几个数据帧,只需接受最少的代码重复:
def read_data_into_df(name):
return pd.read_csv(f"file_{name}.csv")
...
df_ham = read_data_into_df('ham')
df_spam = read_data_into_df('spam')
df_bacon = read_data_into_df('bacon')
...
# Use df_ham, df_spam and df_bacon
如果它们很多,或者生成了确切的数据帧,我会使用字典来跟踪数据帧:
dataframes = {}
def read_data_into_df(name):
return pd.read_csv(f"file_{name}.csv")
...
for name in ['ham', 'spam', 'bacon']:
dataframes[name] = read_data_into_df('name')
...
# Use dataframes['ham'], dataframes['spam'] and dataframes['bacon']
# Or iterate over dataframes.values() or dataframes.items()!