我有一个for循环,我想在每个循环中调用不同的pd.Dataframe,然后将特定的列(“ feedin”)添加到另一个数据帧中。变量名称由'feedin_'+ x组成。假设a,b和c。因此,在第一个循环中,我想调用变量feedin_a并将列“ feedin”添加到新的数据框中。在下一个feedin_b中,依此类推。
我传递了['a','b','c']的列表,并尝试合并feedin_ + a。但是由于列表由字符串参数组成,因此不会调用变量
feedin_a = pd.Dataframe
feedin_b = pd.Dataframe
feedin_c = pd.Dataframe
list = ['a', 'b', 'c']
for name in list:
df.new['feedin_'+name] = 'feedin_'+name['feedin']
这不起作用,因为该变量被称为字符串。希望你能解决我的问题。
答案 0 :(得分:0)
这是在确实需要像列表这样的数据结构时使用变量feedin_a
,feedin_b
并不是一个好主意的原因之一。
如果您无法更改此设置,则可以在locals()
(或globals()
字典中查找名称:
df.new['feedin_'+name] = locals()['feedin_'+name]['feedin']
答案 1 :(得分:0)
您可以使用locals(),所以它应该像这样:
feedin_a = pd.Dataframe
feedin_b = pd.Dataframe
feedin_c = pd.Dataframe
name_list = ['a', 'b', 'c']
for name in list:
key = 'feedin_{}'.format(name)
df.new[key] = locals()[key]
还要选中此Python, using two variables in getattr?
p.s。不要使用list
作为变量名,因为它是内置的python对象
答案 2 :(得分:0)
其他人已通过使用locals()
回答了您的确切问题。在评论中,有人指出了实现您所追求的目标的另一种方法:使用字典将“变量名”保存为字符串,可以通过字符串操作进行查找。
import pandas as pd
dataframes = dict()
letter_list = ['a', 'b', 'c']
for letter in letter_list:
dataframes['feedin_'+letter] = pd.DataFrame()
for name in letter_list:
dataframes['feedin_'+name].insert(0, 'feedin_'+name, None)
print(dataframes)
{'feedin_a': Empty DataFrame Columns: [feedin_a] Index: [], 'feedin_b': Empty DataFrame Columns: [feedin_b] Index: [], 'feedin_c': Empty DataFrame Columns: [feedin_c] Index: []}
如果您打算通过字符串操作大量调用DataFrames,那么这是一个不错的方法。