我是python的新手,它可能是一个简单的问题,但我似乎无法找到解决方案。
我有几个pandas数据框,名称如下: output_1,output_2,...,output_n
我想总结它们的长度(就像它们的行数一样),我想出了类似的东西:
sum =0
for num in range(1,n):
nameframe="output_"+str(num)
sum+=nameframe.shape[0]
问题是Python将nameframe视为字符串,而不是数据帧的名称。
环顾四周,我发现了一个潜在的解决方案:
sum =0
for num in range(1,n):
x = globals()["output_urls_%s" % num]
sum+=x.shape[0]
这似乎有效,但是使用globals()似乎非常气馁。 因此,达到我目的的最pythonic方式是什么?
答案 0 :(得分:2)
最pythonic方式可能是将数据帧存储在列表中。如,
dfs = [output_1, output_2, ...]
df_length = sum(x.shape[0] for x in dfs)
或者,您可以考虑将数据存储在组合的pandas数据结构中,假设它们都以某种方式相关。例如,如果每个数据帧是不同的组,您可以在组合帧上设置MultiIndex,例如
df = pd.concat([output_1, output_2, ...], keys=['group_a', 'group_b', ..])
然后你可以只取合并帧的长度。