如何在Pandas中按条件修改DataFrame的行列数据?
Pandas按条件修改DataFrame数据点的实现方法
方法一:使用loc条件索引(推荐)
这是最直接高效的方式,通过布尔索引定位目标行,直接修改指定列的值:
- 先构造示例数据:
import pandas as pd # 构造输入DataFrame data = { 'Column A': [1, 2, 3, 4, 5, 6, 7, 8], 'Column B': [1, 1, 1, 2, 2, 2, 1, 1] } df = pd.DataFrame(data)
- 执行条件修改:
# 定位Column B>1的行,将对应Column A的值除以2 df.loc[df['Column B'] > 1, 'Column A'] /= 2
执行后打印df,即可得到预期结果:
Column A Column B 0 1.0 1 1 2.0 1 2 3.0 1 3 2.0 2 4 2.5 2 5 3.0 2 6 7.0 1 7 8.0 1
方法二:使用numpy.where
如果需要生成新列或避免原地修改,可使用numpy.where实现条件赋值:
import numpy as np # 对Column A按条件赋值:满足Column B>1则除以2,否则保留原值 df['Column A'] = np.where(df['Column B'] > 1, df['Column A'] / 2, df['Column A'])
说明
loc是Pandas原生的索引方式,针对DataFrame的批量操作性能更优,适合处理大数据集。- 两种方法都能实现需求,可根据是否需要原地修改选择对应方式。
内容的提问来源于stack exchange,提问作者user16593576
相关产品推荐
相关产品推荐

