我有两个数据框df1,df2,如下所述
df1
prod age
0 Winalto_eu 28
1 Winalto_uc 25
2 CEM_eu 30
df2
age qx
0 25 2.7
1 26 2.8
2 27 2.8
3 28 2.9
4 29 3.0
5 30 3.2
6 31 3.4
7 32 3.7
8 33 4.1
9 34 4.6
10 35 5.1
11 36 5.6
12 37 6.1
13 38 6.7
14 39 7.5
15 40 8.2
我想向df1添加带有for循环的新列。
新列的名称应为qx1,qx2,... qx10
for i in range(0,10):
df1['qx'+str(i)]
qx1的值应受循环影响,对age进行某种vlookup:
例如,在第一行中,对于产品'Winalto_eu',qx1的值应为
df2 ['qx']在28 + 1岁,qx2在28 + 2岁...
目标数据框应如下所示:
prod age qx1 qx2 qx3 qx4 qx5 qx6 qx7 qx8 qx9 qx10
0 Winalto_eu 28 3.0 3.2 3.4 3.7 4.1 4.6 5.1 5.6 6.1 6.7
1 Winalto_uc 25 2.8 2.8 2.9 3.0 3.2 3.4 3.7 4.1 4.6 5.1
2 CEM_eu 30 3.4 3.7 4.1 4.6 5.1 5.6 6.1 6.7 7.5 8.2
你有什么主意吗?
谢谢
最佳答案
我想这会给你想要的。我使用shift函数首先在df2中生成其他列,然后与df1合并。
import pandas as pd
df1 = pd.DataFrame({'prod': ['Winalto_eu', 'Winalto_uc', 'CEM_eu'], 'age' : [28, 25, 30]})
df2 = pd.DataFrame({'age': list(range(25,41)), 'qx': [2.7, 2.8, 2.8, 2.9, 3, 3.2, 3.4, 3.7, 4.1, 4.6, 5.1, 5.6, 6.1, 6.7, 7.5, 8.2]})
for i in range(1,11):
df2['qx'+str(i)] = df2.qx.shift(-i)
df3 = pd.merge(df1,df2,how = 'left',on = ['age'])
关于python - 如何在数据框中添加带有for循环的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59903105/