gpt4 book ai didi

python - 如何在python/pandas的循环中迭代使用变量名

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:28 25 4
gpt4 key购买 nike

这似乎是一个很常见的问题,但我的问题略有不同。 SO中的大部分问题我都搜索过;给出了如何迭代地创建不同的变量。但是我想迭代地使用那些已经在字典中的变量。

考虑使用 pandas,假设我定义了 3 个数据帧 df_E1、df_E2、df_E3。他们每个人都有姓名、日期、目的等列。

假设我想打印所有这些描述。 df_E1.describe(), df_E2.describe(), df_E3.describe() 。现在,如果我有 20-30 个这样的数据帧并且我想在 for 循环中从 df_E{number}.describe() 描述,而不是一个一个地打印,该怎么办。我该怎么做?

df_E1 = {'name':['john','tom','barney','freddie'], 'number':['3','4','5','6'], 'description':['a','b','c','d']}
df_E2 = {'name':['andy','candy','bruno','mars'], 'number':['1','2','5','8'], 'description':['g','h','j','k']}
df_E3 = {'name':['donald','trump','harry','thomas'], 'number':['9','4','5','7'], 'description':['c','g','j','r']}
df_E1 = pd.DataFrame(df_E1)
df_E2 = pd.DataFrame(df_E2)
df_E3 = pd.DataFrame(df_E3)
print(df_E1.head())
print(df_E2.head())
print(df_E3.head())

#### instead of above three statements, is there any way I can print them in a
#### for loop. Below does not work as it gives just the string printed.
for i in range(1,4):
print(str('df_E')+str(i))

### Now if I am able to print dataframes somehow, I will be able to use all
### these in a loop. Eg. if I need to print describe of these, I will be able
### to do it in for loop:

for i in range(1,4):
print((str('df_E')+str(i)).describe()) // something like this which works

这并没有反射(reflect)已经提出的问题,因为它们更侧重于在 for 循环中将变量创建为字符串,我知道这可以使用字典来完成。但是在这里,要求是使用已经存在的变量

最佳答案

这里最好使用dict:

d = {'df_E1':df_E1, 'df_E2':df_E2, 'df_E3':df_E3}
print (d)
{'df_E1': name number description
0 john 3 a
1 tom 4 b
2 barney 5 c
3 freddie 6 d, 'df_E2': name number description
0 andy 1 g
1 candy 2 h
2 bruno 5 j
3 mars 8 k, 'df_E3': name number description
0 donald 9 c
1 trump 4 g
2 harry 5 j
3 thomas 7 r}

for k, v in d.items():
print (v.describe())
name number description
count 4 4 4
unique 4 4 4
top john 5 b
freq 1 1 1
name number description
count 4 4 4
unique 4 4 4
top bruno 5 g
freq 1 1 1
name number description
count 4 4 4
unique 4 4 4
top harry 5 r
freq 1 1 1

但有没有可能,却没有recommended , 与 globals:

for i in range(1,4):
print(globals()[str('df_E')+str(i)])

name number description
0 john 3 a
1 tom 4 b
2 barney 5 c
3 freddie 6 d
name number description
0 andy 1 g
1 candy 2 h
2 bruno 5 j
3 mars 8 k
name number description
0 donald 9 c
1 trump 4 g
2 harry 5 j
3 thomas 7 r

关于python - 如何在python/pandas的循环中迭代使用变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com