Отображение различных значений в интервалах диапазона - PullRequest
0 голосов
/ 29 мая 2018

У меня есть следующий фрейм данных:

df_data = pd.DataFrame({'Time_0': [5, 5, 5],
                        'Time_1': [8, 10, 12],
                        'Values': [10.0, 15.0, 20.0]})

Мне нужно распределить Values в новый фрейм данных о движении денежных средств в каждой строке с интервалами time_0 и time_1.В настоящее время он отображается в одном ряду:

df_CF = pd.DataFrame({'Values': [0.0 for n in (range(0, 16))],
                      'Months': range(0, 16)})
df_CF['Values'] = df_CF['Months'].map(df_data.set_index('Time_1')['Values']).fillna(value=0)

Однако я не совсем уверен, как можно расширить его на весь диапазон.Выход должен быть:

**Time   Values**
0        0
1        0
2        0
3        0
4        0
5        45
6        45
7        45
8        45
9        35
10       35
11       20
12       20
13       0
14       0
15       0
16       0

1 Ответ

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

После вашего редактирования:

df_data = pd.DataFrame({'Time_0':[5,5,5]
               ,'Time_1':[8,10,12]
               ,'Values':[10.0,15.0,20.0]})

df_dict={"Range": [k for k in range(20)],
    "CF": [0 for k in range(20)]}

for j in range(len(df_dict["Range"])):
    for z in range(len(df_data)):
        if df_data['Time_0'].iloc[z]<=df_dict['Range'][j] and df_data['Time_1'].iloc[z]>=df_dict['Range'][j]:
            df_dict['CF'][j]=df_dict['CF'][j]+df_data['Values'].iloc[z]

Вывод:

    CF
0   0.0
1   0.0
2   0.0
3   0.0
4   0.0
5   45.0
6   45.0
7   45.0
8   45.0
9   35.0
10  35.0
11  20.0
12  20.0
13  0.0
14  0.0
15  0.0
16  0.0
17  0.0
18  0.0
19  0.0

Я уверен, что более элегантные решения существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...