猿问

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

我试图通过将每个索引除以前一个索引来找到数据框中导航的变化。我对此很陌生并且很困惑!希望你能帮忙。谢谢!


t1 = 0

d = []

for f in final_df['nav']:

    t = float(f)

    d.append(t / t1)

    t1 = t

print(d)


泛舟湖上清波郎朗
浏览 146回答 4
4回答

函数式编程

用shift在系列上。d = final_df['nav'] / final_df['nav'].shift(-1)不过,您必须弄清楚如何处理最后一项,因为没有什么可除的。

红颜莎娜

尝试除以移位from pandas import pandas as pdfinal_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  change2020-01-01    10    13    3     NaN2020-01-02    20    23    6     2.02020-01-03    15    18    9     1.52020-01-04    30    33   27     3.02020-01-05    45    48  108     4.0

临摹微笑

您不需要为此实现循环函数,请使用 pandaspct_change函数df['nav'].pct_change()

喵喵时光机

您可以尝试使用 .shift 方法作为分母。这会将值降低 1。在下面的示例中,发生的情况是500 / NaN = NaN415 / 500 = .83293 / 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
随时随地看视频慕课网APP

相关分类

Python
我要回答