Python中如何实现DataFrame首行值在5-10区间时替换整列值
实现方案
错误原因分析
原有代码的核心问题是loc索引器的参数顺序错误:df.loc[行选择条件, 列选择条件],你将判断列是否符合要求的布尔序列放在了行选择参数的位置,无法正确筛选出目标列。
正确代码
分步写法(可读性更高)
import pandas as pd # 构造示例DataFrame df = pd.DataFrame(data={'a':[13,5,6,21,9], 'b': [11,5,6,1,2], 'c': [9,28,45,61,31], 'd': [5,16,23,1,23]}) # 筛选第一行取值介于5~10之间的列 target_cols = df.columns[df.loc[0].between(5, 10)] # 目标列所有值替换为test df[target_cols] = 'test'
精简一行写法
df.loc[:, df.loc[0].between(5, 10)] = 'test'
其中第一个:表示选中所有行,第二个参数为列筛选条件,直接赋值即可实现需求。
输出验证
运行后得到的df和你预期的结果完全一致:
| a | b | c | d |
|---|---|---|---|
| 13 | 11 | test | test |
| 5 | 5 | test | test |
| 6 | 6 | test | test |
| 21 | 1 | test | test |
| 9 | 2 | test | test |
内容的提问来源于stack exchange,提问作者an10b3
相关产品推荐
相关产品推荐

