首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按范围间隔映射不同的值。

问按范围间隔映射不同的值。
EN

Stack Overflow用户
提问于 2018-05-29 10:44:26
回答 1查看 252关注 0票数 0

我有以下数据:

代码语言:javascript
复制
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间隔内的每一行。我目前已将其映射到一行:

代码语言:javascript
复制
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)

但是,我不太确定我怎么能把它扩展到整个范围。产出应是:

代码语言:javascript
复制
**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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 11:48:58

编辑后:

代码语言:javascript
复制
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]

输出:

代码语言:javascript
复制
    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

不过,我相信确实存在更优雅的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50582390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档