【发布时间】:2014-10-18 15:14:02
【问题描述】:
我对 python 很陌生,这可能是一个简单的问题,但我似乎找不到解决方案。
我有几个 pandas 数据框,其名称如下: 输出_1,输出_2,...,输出_n
我想总结它们的长度(如它们的行数),我想出了这样的东西:
sum =0
for num in range(1,n):
nameframe="output_"+str(num)
sum+=nameframe.shape[0]
问题在于 Python 将名称框视为字符串,而不是数据框的名称。
环顾四周,我发现了一个潜在的解决方案:
sum =0
for num in range(1,n):
x = globals()["output_urls_%s" % num]
sum+=x.shape[0]
这似乎可行,但似乎非常不鼓励使用 globals()。 因此,实现我的目的最pythonic的方式是什么?
【问题讨论】:
-
你处于一个需要大量工作的混乱局面,因为你一开始就没有坚持标准。与其手动创建所有数据框并为它们提供类似 df_id 的名称,不如在循环中创建它们并将它们粘贴到列表中。然后您可以遍历该列表。
-
您可以在循环中使用
nameframe = eval("output_"+str(num)),但我同意@FooBar 您应该在创建时将它们存储为列表,或者如果您想保留名称,请使用字典。 -
好的,谢谢。我确实在列表中插入了数据框。它更整洁,更易于访问。
标签: python for-loop dynamic reference pandas