我有一个df,其中包含有关某些资产的房地产价值和预计的月销售时间的信息:
df_data = pd.DataFrame({'Asset_Id':[1,2,3]
,'REV':[150000.00,200000.00,250000.00]
,'TTS':[9,12,15]})
我正在尝试将此信息转换为现金流量表,方法是创建一个新的零填充数据框并用loc替换它的值
df_CF = pd.DataFrame({'Income':[0.00 for n in (range(0,24))],
'Months':range(0,24)})
df_CF.iloc[df_data.TTS,0] = df_data.REV
但是,此代码正在取代收入'值与#34;数据"的索引位置中的值表,而不是将其TTS与现金流量数据框位置匹配的值。自"数据"表只包含3行,这是返回NaN。
在" CF"数据框,预期收益率应为第9个月的150.000,第12个月的200.000和第15个月的250.000。
答案 0 :(得分:1)
我认为需要map
:
df_CF['Income']=df_CF['Months'].map(df_data.set_index('TTS')['REV']).fillna(df_CF['Months'])
print (df_CF)
Income Months
0 0.0 0
1 1.0 1
2 2.0 2
3 3.0 3
4 4.0 4
5 5.0 5
6 6.0 6
7 7.0 7
8 8.0 8
9 150000.0 9
10 10.0 10
11 11.0 11
12 200000.0 12
13 13.0 13
14 14.0 14
15 250000.0 15
16 16.0 16
17 17.0 17
18 18.0 18
19 19.0 19
20 20.0 20
21 21.0 21
22 22.0 22
23 23.0 23
答案 1 :(得分:0)
您可以使用:
df_CF.iloc[df_data.TTS,0] = df_data.REV.values