Python如何给DataFrame新增列仅第一个单元格赋值
你当前的代码是对整列直接赋值,所以所有行的one_way_turnover字段都会被填充相同的计算值。要实现仅首行写入该值、其余位置留空,按你使用的数据分析库选择对应写法即可。
另外注意你现有代码里的.abs.sum()缺少方法调用的括号,正确写法是.abs().sum(),否则会抛出属性错误。
Pandas 实现方案
- 先创建空的新列,默认填充NaN:
import numpy as np df['one_way_turnover'] = np.nan
- 计算目标值后仅给第一行赋值:
turnover_val = df[col_name].abs().sum() / 2 # iloc[0]对应第一行,通过columns.get_loc定位新列的位置 df.iloc[0, df.columns.get_loc('one_way_turnover')] = turnover_val
Polars 实现方案
如果你的代码用的是Polars库(原写法的df[:, '列名']是Polars的典型索引风格),可以直接用when-then语法批量判断行位置赋值:
import polars as pl turnover_val = df[col_name].abs().sum() / 2 df = df.with_columns( one_way_turnover = pl.when(pl.int_range(0, pl.len()) == 0).then(turnover_val).otherwise(None) )
内容的提问来源于stack exchange,提问作者Zack
相关产品推荐
相关产品推荐

