假设我有3个数据帧:
df=pd.DataFrame({'area':['lab','class_room','pool','gardem'],'%_chance':[0.33,0.27,.30,.10]})
da=pd.DataFrame({'city':['jess','nobytown','paris','miami'],'%_chance':[0.5,0.30,.15,.05]})
db=pd.DataFrame({'country':['china','japan','france','eua'],'%_chance':[0.43,0.27,.20,.10]})
和一个包含数据框架名称的列表:
dataframe_list_name = ['df','da','db']
我想获得每个数据帧的第一列的第一行的值(在这种情况下只有3个,但我可以有更多),并将它们附加到一个列表。
我正在尝试这个:
f=[]
for name in dataframe_names:
x=name.iloc[0,0]
这个不能工作,因为name是一个字符串。我的问题是:我如何遍历该数据框架的名称列表以使该代码工作?
输出应该是:
f =["实验室","杰斯","中国")
不要使用列表中的名称,而是使用变量(即数据框架)本身:
dataframes = [df,da,db]
f = [d.iat[0,0] for d in dataframes]
输出:['lab', 'jess', 'china']
理论上可以使用名称,但这是一个不好的做法,并且使代码显式不佳并且容易出现bug/错误/不必要的行为(所以请不要这样做!):
dataframe_list_name = ['df','da','db']
g = globals()
f = [g[name].iat[0,0] for name in dataframe_list_name]