Loc возвращает значение столбца вместо значения индекса - PullRequest
0 голосов
/ 28 мая 2018

У меня есть 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

Однако этот код заменяет значения «Income» значениями в позиции индекса таблицы «Data», а незначение, которое совпадает с его TTS с позицией данных в денежном потоке.Поскольку таблица «Данные» содержит только 3 строки, это возвращает NaN.

В кадре данных «CF» ожидаемый возврат должен составлять 150 000 в 9 месяце, 200 000 в 12 месяце и 250 000 в месяце 15.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Мне кажется, нужно 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
0 голосов
/ 28 мая 2018

Вы можете использовать:

df_CF.iloc[df_data.TTS,0] = df_data.REV.values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...