如何在python中从数据帧列表中删除引号

2024-06-28 14:46:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python字符串列表,这些字符串是表示数据帧的变量的名称

my_dataframe_list = ['df1', 'df2', 'df3']

因此,从概念上讲,需要删除单引号,最终输出应该是数据帧列表

my_dataframe_list = [df1, df2, df3]

Tags: 数据字符串名称概念dataframe列表mylist
2条回答

一种方法是使用内置的^{}方法:

my_dataframe_list = ['df1', 'df2', 'df3']
my_dataframe_list = [eval(df) for df in my_dataframe_list]

您可以使用^{}代替列表理解:

my_dataframe_list = ['df1', 'df2', 'df3']
my_dataframe_list = list(map(eval, my_dataframe_list))

但是要小心,eval方法是危险的;您不应该在不受信任的输入上使用它。有关更多详细信息,请参阅本文:Eval really is dangerous

也许一个更过滤的列表会更好:

my_dataframe_list = [eval(df) for df in my_dataframe_list if df.startswith('df') and df[2:].isdigit()]

但是,当然,您可以做的最好的事情是以一种不需要使用eval的方式构造现有代码


此堆栈溢出帖子建议使用ast.literal_eval()方法:Python: make eval safe

当然,它需要您安装ast模块,并且提供的字符串或节点可能只包含以下Python文本结构:字符串、字节、数字、元组、列表、dicts、set、booleans和None

您可以access it from ^{}

df1 = pd.DataFrame([1, 2, 3])
df2 = pd.DataFrame([2, 4, 6])
my_dataframe_list = ['df1', 'df2']

my_dataframe_list = [globals()[df] for df in my_dataframe_list]
my_dataframe_list[0]

#    0
# 0  1
# 1  2
# 2  3
my_dataframe_list[1]

#    0
# 0  2
# 1  4
# 2  6

相关问题 更多 >