如何在Pandas DataFrame中无需迭代行,基于其他行创建新列V?
在Pandas DataFrame中创建基于相邻行计算的新列
可以直接使用Pandas的shift()方法实现,无需迭代行——这是Pandas推荐的向量化操作方式,效率远高于逐行迭代:
import pandas as pd # 假设你的DataFrame为df df['V'] = df['x'] - df['x'].shift(-1)
方法说明
df['x'].shift(-1)会将x列的所有数据向上偏移一行,让当前行的x值和下一行的x值自然对齐,直接做减法就能得到目标结果。- 最后一行因为没有对应的下一行数据,计算结果会是
NaN。如果需要处理这个值,可以根据需求选择:- 用固定值填充:
df['V'] = df['x'] - df['x'].shift(-1).fillna(0) - 删除含
NaN的行:df = df.dropna(subset=['V'])
- 用固定值填充:
示例验证
针对你给出的数值:当前行x值93.244598减去下一行x值93.093285,通过上述代码会直接得到预期结果0.151313。
内容的提问来源于stack exchange,提问作者Mark B
相关产品推荐
相关产品推荐

