假设我具有以下数据框:
import pandas as pd
df = pd.DataFrame({'return':[10, 28, 32, 50, 25]})
我想在新列中将25(最后一个元素)设置为100,然后向后进行50 * 100/25 = 200、32 * 100/25 = 32 * 200/50 = 128 ..等
return index
0 25
1 28
2 32 128
3 50 200
4 25 100
是否有任何一种方法(最好是一行)做到这一点。谢谢!
df['index']=.... ???
答案 0 :(得分:2)
您可以使用iat
提取系列的最后一个值:
df['index'] = df['return'] * 100 / df['return'].iat[-1]
print(df)
return index
0 10 40.0
1 28 112.0
2 32 128.0
3 50 200.0
4 25 100.0
答案 1 :(得分:1)
是的,一个行是可能的。只需使用df['return'].iloc[-1]
来获得return
列的最后一个值,然后像下面这样简单地做
import pandas as pd
df = pd.DataFrame({'return':[10, 28, 32, 50, 25]})
df['index'] = (df['return'] * 100 / df['return'].iloc[-1]).astype(int)
print(df)
输出:
return index
0 10 40
1 28 112
2 32 128
3 50 200
4 25 100
答案 2 :(得分:0)
也许是这样吗?
import pandas as pd
df = pd.DataFrame({'return':[10, 28, 32, 50, 25]})
last = df["return"].iloc[-1]
df['index'] = df['return'].apply(lambda x: x*(100/last))
df
它给出:
return index
0 10 40.0
1 28 112.0
2 32 128.0
3 50 200.0
4 25 100.0