我正在尝试使用循环为我的数据框架创建一个额外的列,其中额外的列将是当前列的倍数,但该倍数将改变。我知道这可以通过为每个列创建一个新列来相对容易地解决,但这是一个更大项目的一部分,我不能这样做。
从这个数据框开始
Time Amount
0 20 10
1 10 5
2 15 25
希望有以下结果:
Time Amount Amount i=2 Amount i=3 Amount i=4
0 20 10 20 30 40
1 10 5 10 15 20
2 15 25 50 75 75
认为应该有一个简单的答案,但在网上找不到任何东西。到目前为止,我有这个:
data = {'Time': [20,10,15],
'Amount': [10,5,25]}
df = pd.DataFrame(data)
for i in range(2,5):
df = df.append(df['Amount']*i)
print(df)
感谢你想要这样的东西吗?
for i in range(2,5):
df["Amout i={}".format(i)] = df['Amount']*i
输出:
Time Amount Amout i=2 Amout i=3 Amout i=4
0 20 10 20 30 40
1 10 5 10 15 20
2 15 25 50 75 100
您在找:
import pandas as pd
data={'Time':[20,10,15],'Amount':[10,5,25]}
df=pd.DataFrame(data)
for i in range(2,5):
df['Amount i='+str(i)]=df['Amount']*i
print(df)
结果:
Time Amount Amount i=2 Amount i=3 Amount i=4
0 20 10 20 30 40
1 10 5 10 15 20
2 15 25 50 75 100
尝试:
df = df.join(pd.concat([df['Amount'].mul(i).rename(f'Amount i={i}')
for i in range(2, 5)], axis=1))
>>> df
Time Amount Amount i=2 Amount i=3 Amount i=4
0 20 10 20 30 40
1 10 5 10 15 20
2 15 25 50 75 100