如何根据指定行数值条件筛选DataFrame列?附示例
Pandas保留指定行数值大于阈值的列
方法核心思路
先定位目标行,筛选出该行中数值满足条件的列名,再用这些列名对原DataFrame切片,保留所有行的对应列。
步骤与代码示例
首先构造示例中的原始DataFrame:
import pandas as pd # 构造数据 data = { 'T': [0.207906, 0.196817, 0.228247, 0.303633, 0.100477], 'TU': [0.211786, 0.208811, 0.236007, 0.308214, 0.099930], 'TUXT': [0.145491, 0.149292, 0.154773, 0.231662, 0.075825], 'TEXT': [0.125727, 0.112480, 0.126083, 0.168093, 0.048684], 'TEST': [0.230134, 0.213108, 0.247899, 0.317019, 0.104480] } df = pd.DataFrame(data, index=pd.date_range('2022-10-02', periods=5, freq='W'))
1. 保留最后一行数值大于0.1的列
# 获取最后一行数据 last_row = df.iloc[-1] # 筛选数值>0.1的列名 filtered_cols = last_row[last_row > 0.1].index # 切片原DataFrame result_last_row = df[filtered_cols] print(result_last_row)
输出结果:
T TEST 2022-10-02 0.207906 0.230134 2022-10-09 0.196817 0.213108 2022-10-16 0.228247 0.247899 2022-10-23 0.303633 0.317019 2022-10-30 0.100477 0.104480
2. 保留指定索引行(如'2022-10-30')数值大于0.1的列
# 指定目标索引 target_index = '2022-10-30' # 获取目标行数据 target_row = df.loc[target_index] # 筛选列名 filtered_cols = target_row[target_row > 0.1].index # 切片原DataFrame result_target_row = df[filtered_cols] print(result_target_row)
输出结果与上述完全一致。
关键细节
- 用
iloc[-1]快速定位最后一行,loc[索引值]精准定位指定行 - 布尔索引直接筛选目标行中符合条件的列,无需复杂循环
- 最终通过列名列表切片,保留所有行的目标列
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

