从DataFrame列表列中按count列最小值匹配获取对应row值
处理DataFrame列表列的最小值匹配需求
输入数据
原始DataFrame如下:
import pandas as pd df = pd.DataFrame({ 'Flow': ['Apple', 'Orange'], 'row': [[45, 46], [13, 14]], 'count': [[2, 1], [1, 5]] })
需求说明
针对每行数据,找出count列列表中的最小值,同时获取row列列表中对应位置的数值,最终输出包含Flow、对应row值、最小count值的新DataFrame。
解决方案
可以通过pandas的apply方法逐行处理数据:
# 定义处理单行的函数 def extract_min_info(row): min_count = min(row['count']) min_index = row['count'].index(min_count) return pd.Series([row['Flow'], row['row'][min_index], min_count], index=['Flow', 'row', 'count']) # 生成结果DataFrame result_df = df.apply(extract_min_info, axis=1) print(result_df)
也可以用更简洁的lambda表达式实现:
result_df = df.apply(lambda x: pd.Series({ 'Flow': x['Flow'], 'row': x['row'][x['count'].index(min(x['count']))], 'count': min(x['count']) }), axis=1)
输出结果
运行代码后得到的结果如下:
Flow row count 0 Apple 46 1 1 Orange 13 1
内容的提问来源于stack exchange,提问作者user12345
相关产品推荐
相关产品推荐

