如何无循环将pandas.DataFrame.shape属性应用到元组内的多个DataFrame
不用循环获取元组中每个DataFrame的shape属性
嘿,我刚好有几个简洁的方案能满足你的需求,完全不需要写显式循环,一起来看看:
方法1:使用map函数
map函数天生就是用来对可迭代对象的每个元素批量应用操作的,这里我们可以直接用它提取每个DataFrame的shape属性:
import pandas as pd def myfunction(): x = pd.DataFrame(data = [1,2,3]) y = pd.DataFrame(data = [[1,2,3],[4,5,6]]) return x, y # 用map处理后转成元组(map返回迭代器,转元组方便直接查看结果) shape_tuple = tuple(map(lambda df: df.shape, myfunction())) print(shape_tuple) # 输出: ((3, 1), (2, 3))
如果想再精简一步,甚至可以直接传入pd.DataFrame.shape这个属性访问器:
shape_tuple = tuple(map(pd.DataFrame.shape, myfunction()))
方法2:使用生成器表达式
生成器表达式是Python里可读性极强的简洁语法,它没有显式的循环块,完全符合你的要求:
shape_tuple = tuple(df.shape for df in myfunction()) print(shape_tuple) # 输出: ((3, 1), (2, 3))
这个写法一眼就能看懂逻辑:遍历函数返回的每个DataFrame,提取它们的shape后组成新元组。
两种方法都能高效完成任务,你可以根据自己的编码习惯选择~
内容的提问来源于stack exchange,提问作者Seymour
相关产品推荐
相关产品推荐

