我有以下数据框:
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
答案 0 :(得分:0)
关注您的修改:
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
我相信确实存在更优雅的解决方案。