使用Pandas提取指定列值较大的行中另一列的最小值
没问题,咱们一步步来搞定这个Pandas操作需求~
用Pandas实现「筛选大值行+提取指定列最小值」
我会结合你给出的表格数据来演示具体步骤,确保你能直接套用。
1. 先把数据加载进Pandas
首先得把你的数据变成Pandas能处理的DataFrame。如果你的数据存在文件里(比如CSV),用pd.read_csv就行;要是像你给出的原始数据,也可以手动构造测试:
import pandas as pd # 手动构造你提供的数据(补全了最后一行的缺失值) data = [ [15680, 1518170208, None, 0.003956, 1.0, 0.003956], [9819, 1326073214, None, 0.005536, 1.0, 0.005536], [12158, 1396892758, 0.002297, 0.008135, 5.0, 0.007002], [7294, 1235493859, None, 0.011872, 1.0, 0.011872], [10241, 1336302850, None, 0.011971, 1.0, 0.011971], [538, 1013948579, None, 0.012109, 1.0, 0.012109], [12262, 1407192602, None, 0.014108, 1.0, 0.014108], [1729, 1053544775, 0.003417, 0.018708, 3.0, 0.018736], [9987, 1326336603, 0.015904, 0.024315, 3.0, 0.018938], [5614, 1184677494, 0.001838, 0.0212, None, None] ] df = pd.DataFrame(data, columns=['prov_code', 'stdev', 'median', 'counts', 'col5', 'average'])
2. 筛选某列数值较大的行
这里分两种最常用的场景,你可以按需选择:
- 场景1:取该列数值最大的前N行(比如我选
counts列最大的前3行)
# 按counts列降序排序,取前3行 top_large_rows = df.sort_values(by='counts', ascending=False).head(3)
- 场景2:筛选数值大于某个阈值的行(比如筛选
counts大于0.015的行)
# 直接用布尔索引筛选 filtered_rows = df[df['counts'] > 0.015]
3. 提取目标列的最小值
注意你的数据里median列有不少NaN值,所以提取最小值的时候要记得跳过这些空值,不然结果会是NaN:
# 从筛选后的行里提取median列的最小值,skipna=True跳过空值 min_target_value = top_large_rows['median'].min(skipna=True) # 打印结果 print(f"提取到的最小值是:{min_target_value}")
实际运行结果(结合你的数据)
如果用场景1取counts最大的前3行,对应的行是counts为0.024315、0.0212、0.018708的记录,它们的median分别是0.015904、0.001838、0.003417,所以最终提取到的最小值就是0.001838。
内容的提问来源于stack exchange,提问作者avogadro
相关产品推荐
相关产品推荐

