我如何在数据框中执行之前的计算
how do I perform the before calculation in dataframe
你好假设我有一个 df
x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))
但我想更改 'y' 列下的值,第一行是 100,第二行是 102(即 100*.02),第三行是 107.1 (102*1.05) 等等。
我该怎么做? (我觉得应该用shift函数来完成?)
我猜你想做这个操作:y = 100*(x+y)
.
如果是这种情况,您可以执行以下操作:
df['y'] = 100*df.sum(axis=1)
我想下面是你需要的
df.loc[0,'y'] = 100
for i in range(1, len(df)):
df.loc[i, 'y'] = df.loc[i-1, 'y'] * (df.loc[i, 'x'] + df.loc[i, 'y'])
x y
0 0.12 100.000
1 0.02 102.000
2 0.05 107.100
3 0.04 111.384
你是这个意思吗?
df.loc[i, 'y'] = 100
for i in range(1, len(df)):
df.loc[i, 'y'] = df.loc[i - 1, 'y'] * (1 + df.loc[i, 'x'])
输出:
x y
0 0.12 100.000
1 0.02 102.000
2 0.05 107.100
3 0.04 111.384
我相信你需要cumprod()
。它需要对第一个数字进行一些硬编码,之后似乎没问题。
import pandas as pd
import numpy as np
x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))
df['x'] = df['x'] + 1 #Add 1 to make the cumprod() easier
df['y'].loc[0] = 100 #Force the first value to be 100
df['y'].loc[1:] = df['x'].loc[1:].cumprod() * df['y']
df['x'] = df['x'] - 1 #Substract 1 to keep original values
输出:
x y
0 0.12 100.00000
1 0.02 1.02000
2 0.05 1.07100
3 0.04 1.11384
你好假设我有一个 df
x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))
但我想更改 'y' 列下的值,第一行是 100,第二行是 102(即 100*.02),第三行是 107.1 (102*1.05) 等等。
我该怎么做? (我觉得应该用shift函数来完成?)
我猜你想做这个操作:y = 100*(x+y)
.
如果是这种情况,您可以执行以下操作:
df['y'] = 100*df.sum(axis=1)
我想下面是你需要的
df.loc[0,'y'] = 100
for i in range(1, len(df)):
df.loc[i, 'y'] = df.loc[i-1, 'y'] * (df.loc[i, 'x'] + df.loc[i, 'y'])
x y
0 0.12 100.000
1 0.02 102.000
2 0.05 107.100
3 0.04 111.384
你是这个意思吗?
df.loc[i, 'y'] = 100
for i in range(1, len(df)):
df.loc[i, 'y'] = df.loc[i - 1, 'y'] * (1 + df.loc[i, 'x'])
输出:
x y
0 0.12 100.000
1 0.02 102.000
2 0.05 107.100
3 0.04 111.384
我相信你需要cumprod()
。它需要对第一个数字进行一些硬编码,之后似乎没问题。
import pandas as pd
import numpy as np
x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))
df['x'] = df['x'] + 1 #Add 1 to make the cumprod() easier
df['y'].loc[0] = 100 #Force the first value to be 100
df['y'].loc[1:] = df['x'].loc[1:].cumprod() * df['y']
df['x'] = df['x'] - 1 #Substract 1 to keep original values
输出:
x y
0 0.12 100.00000
1 0.02 1.02000
2 0.05 1.07100
3 0.04 1.11384