如何在Python循环中动态引用数据框
我刚开始学Python,可能这个问题很简单,但我找不到解决办法。
我有几个数据框,它们的名字像这样: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()的做法好像不太被推荐。那么,有什么更符合Python风格的方法来实现我的目的呢?
1 个回答
2
最符合Python风格的方法可能是把你的数据框存放在一个列表里。比如:
dfs = [output_1, output_2, ...]
df_length = sum(x.shape[0] for x in dfs)
另外,你也可以考虑把数据存储在一个合并的pandas数据结构中,前提是它们之间有某种关系。比如,如果每个数据框代表一个不同的组,你可以在合并后的框架上设置一个多重索引,像这样:
df = pd.concat([output_1, output_2, ...], keys=['group_a', 'group_b', ..])
然后你就可以直接计算合并框架的长度了。