创建新的数据框列,保留另一列的第一个值
Create new dataframe column keeping the first value from another column
我有一个包含两列的数据框
import pandas as pd
df = pd.DataFrame()
df['A'] = [0.1, 0.1, 0.1, 0.1, 0.1]
df['B'] = [1.66, 1.66, 1.66, 1.66, 1.66]
A B
0.1 1.66
0.1 1.66
0.1 1.66
0.1 1.66
0.1 1.66
我想创建一个新列,其中包含列 A
的第一个值,然后按如下方式完成其余列值:
A B C
0.1 1.66 A[0]
0.1 1.66 B[0]*C[0]
0.1 1.66 B[1]*C[1]
0.1 1.66 B[2]*C[2]
0.1 1.66 B[3]*C[3]
一直这样
A B C
1.66 0.1 0.1
1.66 0.1 0.166
1.66 0.1 0.27556
1.66 0.1 0.45743
1.66 0.1 0.75933
有什么办法可以实现吗? ...
提前致谢!
试试这个:
df["C"] = df["B"].shift().fillna(df.loc[0, "A"]).cumprod()
如果你没有大的 df
data = {'A' : [0.1, 0.1, 0.1, 0.1, 0.1],
'B' : [1.66, 1.66, 1.66, 1.66, 1.66]}
df = pd.DataFrame(data)
df.at[0, 'C'] = df.iloc[0]['A']
for i in range(1, len(df)):
df.at[i, 'C'] = df.iloc[i-1]['B'] * df.iloc[i-1]['C']
df
我有一个包含两列的数据框
import pandas as pd
df = pd.DataFrame()
df['A'] = [0.1, 0.1, 0.1, 0.1, 0.1]
df['B'] = [1.66, 1.66, 1.66, 1.66, 1.66]
A B
0.1 1.66
0.1 1.66
0.1 1.66
0.1 1.66
0.1 1.66
我想创建一个新列,其中包含列 A
的第一个值,然后按如下方式完成其余列值:
A B C
0.1 1.66 A[0]
0.1 1.66 B[0]*C[0]
0.1 1.66 B[1]*C[1]
0.1 1.66 B[2]*C[2]
0.1 1.66 B[3]*C[3]
一直这样
A B C
1.66 0.1 0.1
1.66 0.1 0.166
1.66 0.1 0.27556
1.66 0.1 0.45743
1.66 0.1 0.75933
有什么办法可以实现吗? ... 提前致谢!
试试这个:
df["C"] = df["B"].shift().fillna(df.loc[0, "A"]).cumprod()
如果你没有大的 df
data = {'A' : [0.1, 0.1, 0.1, 0.1, 0.1],
'B' : [1.66, 1.66, 1.66, 1.66, 1.66]}
df = pd.DataFrame(data)
df.at[0, 'C'] = df.iloc[0]['A']
for i in range(1, len(df)):
df.at[i, 'C'] = df.iloc[i-1]['B'] * df.iloc[i-1]['C']
df