如何从多个DataFrame中获取行数最大的DataFrame
查找多个DataFrame中行数最大对象的实现方法
核心逻辑为比较所有输入DataFrame的行数,返回行数最大的对象即可,pandas中可以直接用len(df)获取DataFrame的行数,实现代码如下:
基础实现(返回第一个行数最大的DataFrame)
import pandas as pd def get_max_row_df(*dfs): # 无输入时报错 if not dfs: raise ValueError("请至少传入一个DataFrame") # 按行数取最大值,存在多个相同最大行数时返回第一个出现的 return max(dfs, key=lambda df: len(df))
测试示例
用你给出的三个DataFrame测试效果:
# 构造测试数据 df1 = pd.DataFrame({ "id": [1,2], "A": [2,3], "B": [2,3], "C": [2,3] }) df2 = pd.DataFrame({ "id": [1,2,3,4], "A": [5,6,8,0], "B": [5,6,8,0], "C": [5,6,8,0] }) df3 = pd.DataFrame({ "id": [1], "A": [6], "B": [6], "C": [6] }) # 调用函数获取结果 max_df = get_max_row_df(df1, df2, df3) print(max_df)
输出结果就是行数最大的df2,符合需求。
进阶实现(返回所有行数最大的DataFrame)
如果存在多个行数相同的最大值DataFrame,需要全部返回的话可以用以下版本:
def get_all_max_row_dfs(*dfs): if not dfs: raise ValueError("请至少传入一个DataFrame") # 先计算最大行数 max_row_count = max(len(df) for df in dfs) # 筛选出所有行数等于最大值的DataFrame return [df for df in dfs if len(df) == max_row_count], max_row_count
调用后会返回两个结果:所有符合条件的DataFrame组成的列表、最大行数值。
内容的提问来源于stack exchange,提问作者user16017809
相关产品推荐
相关产品推荐

