如何让DataFrame所有行减去指定行且保留ID列?
解决方案
你可以用Pandas直接对指定列执行广播减法操作,无需改动ID列,具体实现如下:
步骤1:导入库并构造数据
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'ID': [111, 222, 333], 'A': [0, 2, 3], 'B': [1, 3, 4], 'C': [2, 4, 5], 'D': [3, 5, 6] }) # 构造要减去的行数据(转为Series,确保列名匹配) subtract_row = pd.Series({'A':0, 'B':1, 'C':0, 'D':1})
步骤2:执行减法操作
直接针对A、B、C、D列进行广播减法,ID列会自动保留:
df[['A', 'B', 'C', 'D']] -= subtract_row
步骤3:查看结果
print(df)
输出结果:
ID A B C D 0 111 0 0 2 2 1 222 2 2 4 4 2 333 3 3 5 5
补充说明
- 如果你的单行数据是从CSV文件读取的,可以用以下方式转为匹配的Series:
subtract_df = pd.read_csv('your_file.csv') subtract_row = subtract_df.iloc[0] - Pandas的广播机制会自动匹配列名,确保减法仅在对应列执行,ID列完全不受影响。
内容的提问来源于stack exchange,提问作者lserlohn
相关产品推荐
相关产品推荐

