我有以下数据:
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发布于 2018-05-29 11:48:58
编辑后:
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不过,我相信确实存在更优雅的解决方案。
https://stackoverflow.com/questions/50582390
复制相似问题