如何在Python循环中动态引用数据框

0 投票
1 回答
1973 浏览
提问于 2025-04-18 18:26

我刚开始学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', ..]) 

然后你就可以直接计算合并框架的长度了。

撰写回答