为了账号安全,请及时绑定邮箱和手机立即绑定

如何在数据框中的整列中将 df['2'] 除以 df['1'] ?

如何在数据框中的整列中将 df['2'] 除以 df['1'] ?

泛舟湖上清波郎朗 2023-08-08 17:06:17
我试图通过将每个索引除以前一个索引来找到数据框中导航的变化。我对此很陌生并且很困惑!希望你能帮忙。谢谢!t1 = 0d = []for f in final_df['nav']:    t = float(f)    d.append(t / t1)    t1 = tprint(d)
查看完整描述

4 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

shift在系列上。

d = final_df['nav'] / final_df['nav'].shift(-1)

不过,您必须弄清楚如何处理最后一项,因为没有什么可除的。


查看完整回答
反对 回复 2023-08-08
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

尝试除以移位


from pandas import pandas as pd


final_df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45],

                   "Col2": [13, 23, 18, 33, 48],

                   "nav": [3, 6, 9, 27, 108]},

                  index=pd.date_range("2020-01-01", "2020-01-05"))

final_df["change"] = final_df["nav"].div(final_df["nav"].shift(1))


print(final_df)


            Col1  Col2  nav  change

2020-01-01    10    13    3     NaN

2020-01-02    20    23    6     2.0

2020-01-03    15    18    9     1.5

2020-01-04    30    33   27     3.0

2020-01-05    45    48  108     4.0


查看完整回答
反对 回复 2023-08-08
?
临摹微笑

TA贡献1982条经验 获得超2个赞

您不需要为此实现循环函数,请使用 pandaspct_change函数

df['nav'].pct_change()


查看完整回答
反对 回复 2023-08-08
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您可以尝试使用 .shift 方法作为分母。这会将值降低 1。


在下面的示例中,发生的情况是

500 / NaN = NaN

415 / 500 = .83

293 / 415 = .71

...等等


df = df = pd.DataFrame({'value1':[500,415,293,126,115,140,90,190,217]})


# the first row will be NaN

# the first row of the df['value2'].shift() will be empty 

# if you have a value for the first row you can fill it with .fillna(value for first row denomenator)

df['new_value'] = df['value1'] / df['value1'].shift() # .fillna(value of first denomenator)

df


查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信