Loc返回列值而不是索引值

时间:2018-05-28 12:05:26

标签: python pandas

我有一个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。

2 个答案:

答案 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