【发布时间】:2018-12-04 05:55:27
【问题描述】:
伙计们,
我在 StackOverflow 上搜索了我的用例,但找不到任何有用的东西。如果您觉得这个问题已经解决,请指出相应的问题。
用例。
我有以下数据框。
Maturity,Periods
0.5,2
0.5,2
1.0,3
1.0,3
1.0,3
如您所见,maturity 列根据periods 列中的数字重复。现在我想要完成的是创建一个新列,该列将除每个分组成熟度的 1 个值外全为 0。所以预期的数据框是这样的
Maturity,Periods,CP
0.5,2,0
0.5,2,1
1.0,3,0
1.0,3,0
1.0,3,1
正如您在预期的数据框中看到的那样,CP 列中的0s 的数量比Periods 列中的值小1,剩余的值为1。
我尝试了下面的 pandas groupby 操作,但失败了。
new_df['CP'] = new_df.groupby(['Maturity'])['Periods'].apply(lambda x: np.zeros((x-1, 1)) + np.array([1.0])).reset_index()
谁能指出我哪里出错了?
更新编辑:
作为上述问题的后续,如何使用 Pandas 的操作解决以下方法?
使用上面的数据框,我想创建新列,但预期的输出是这样的:
Maturity,Periods,CP,TimeCF
0.5,2,0,0.5
0.5,2,1,0.5
1.0,3,0,0.5
1.0,3,0,1.0
1.0,3,1,1.0
1.5,4,0,0.5
1.5,4,0,1.0
1.5,4,0,1.5
1.5,4,1,1.5
TimeCF 的新列将包含现金流的时间值(考虑债券的半年度现金流)
【问题讨论】:
标签: python pandas numpy dataframe