如何为DataFrame生成每行商值的新列B?
pandas生成相邻行商值列的解决方案
需求说明
现有如下结构的DataFrame:
A 0 2 1 6 2 12
需生成新列B,其中每行值为下一行A列数值 ÷ 当前行A列数值,最后一行无后续行,用-填充,预期结果:
A B 0 2 3 1 6 2 2 12 -
实现代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'A': [2, 6, 12]}) # 计算B列:下一行A与当前行A的商,最后一行填充'-' # 若需要整数结果,使用astype('Int64')支持缺失值的整数类型 df['B'] = (df['A'].shift(-1) / df['A']).astype('Int64').fillna('-') # 查看结果 print(df)
代码说明
df['A'].shift(-1):将A列元素向上偏移一行,当前行可获取下一行的A值,最后一行因无后续行返回NaN- 除法运算后,通过
astype('Int64')将浮点商转为整数(该类型支持缺失值,避免普通int报错) - 用
fillna('-')将最后一行的NaN替换为指定符号-
内容的提问来源于stack exchange,提问作者David95
相关产品推荐
相关产品推荐

