繁体   English   中英

如何在Python中的for循环中动态引用数据帧

[英]How to dynamically refer to dataframes in a for loop in 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将名称框视为字符串,而不是数据框的名称。

环顾四周,我发现了一个潜在的解决方案:

sum =0
for num in range(1,n):
    x = globals()["output_urls_%s" % num] 
    sum+=x.shape[0]

这似乎可行,但是不建议使用globals()。 因此,实现我的目的的最Python方式是什么?

最Python的方式可能是将数据帧存储在列表中。 例如,

dfs = [output_1, output_2, ...]
df_length = sum(x.shape[0] for x in dfs)

另外,您可以考虑将数据存储在组合的熊猫数据结构中,假设它们都以某种方式相关。 例如,如果每个数据帧是一个不同的组,则可以在组合帧上设置一个MultiIndex,例如

df = pd.concat([output_1, output_2, ...], keys=['group_a', 'group_b', ..]) 

然后,您可以选择合并帧的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM