Python:如何在将数据名称用作字符串时迭代数据帧?

ℕʘʘ*_*ḆḽḘ 3 python pandas

我有三种不同的Pandas数据帧

df_1
df_2
df_3
Run Code Online (Sandbox Code Playgroud)

我想循环数据帧,进行一些计算,并使用name数据帧存储输出.换句话说,就像这样

for my_df in [df_1, df_2, df_3]:
  my_df.reset_index(inplace=True)
  my_df.to_csv('mypath/' + my_df +'.csv')
Run Code Online (Sandbox Code Playgroud)

预期的输出文件:

'mypath/df_1.csv', 'mypath/df_2.csv''mypath/df_3.csv'

我正在努力这样做,因为它df_1是一个对象,而不是一个字符串.任何想法如何做到这一点?

谢谢!

jez*_*ael 5

另一个更通用的解决方案是dict使用列名创建然后循环items():

d = {'df_1':df_1,'df_2':df_3, 'df_3':df_3}
for k, my_df in d.items():
    my_df.reset_index(inplace=True)
    my_df.to_csv('mypath/' + k +'.csv')
Run Code Online (Sandbox Code Playgroud)

另一个可能的解决方案是使用另一个list数据帧名称,然后enumerate获取name按位置的值:

names = ['a','b','c']
print ({names[i]: df for i, df in enumerate([df_1, df_2, df_3])})
Run Code Online (Sandbox Code Playgroud)

  • 使用dict理解进行映射;) (2认同)
  • @Noobie`jezrael_the_pythonista`指向的对象可能有很多其他名称,所以实际上不可能这样做. (2认同)