全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
4338 4
2016-02-05
g = pd.DataFrame([[1.,2.],[3.,4.],[5.,6.],[7.,8.],[9.,10.]],columns = ['col1','col2'], dtype=float)
此行代码生成如下的dataframe格式的数据:

   col1  col2
0     1     2
1     3     4
2     5     6
3     7     8
4     9    10



g['return'] =( (g.col1[1:] - g.col1[:])/g.col1[:-1]).astype(float)
在原先的数据表中,增加一列 return

   col1  col2  return
0     1     2     NaN
1     3     4       0
2     5     6       0
3     7     8       0
4     9    10     NaN


问题1:如何设置return列,使其显示小数呢?
问题2:为什么最右下角是NaN,这个值应该是等于 (g.col1[4] - g.col1[3])/g.col1[3]   == 0.28571  啊?

请大神给予解答,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-2-6 06:11:48
(g.col1 - g.col1.shift(1)) / g.col1.shift(1)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-8 13:16:58
钱小二 发表于 2016-2-6 06:11
(g.col1 - g.col1.shift(1)) / g.col1.shift(1)
恩,成功了,多谢指点

只是觉得为什么用我的
g['return'] =( (g.col1[1:] - g.col1[:])/g.col1[:-1]).astype(float)
就会出现问题了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-10 08:33:17
ujmko 发表于 2016-2-8 13:16
恩,成功了,多谢指点

只是觉得为什么用我的
因为你引用g.col[1:]的时候index没有变化,1,2,3,4对应的还是1,3,5,7。只是少了row 0 而已
这样你用g.col[1:] - g.col[:]的时候,相减的并不是你想象的, pandas会找相同的index做运算。所以1,2,3,4位置对应的值都一样,减完就是0。row 0位置没有可以减的,就是NaN。所以最后你得到Nan, 0,0,0,0. 使用shift可以把value沿着index往下Shift。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-11 22:27:03
钱小二 发表于 2016-2-10 08:33
因为你引用g.col[1:]的时候index没有变化,1,2,3,4对应的还是1,3,5,7。只是少了row 0 而已
这样你用g.co ...
了解了,非常感学,新年快乐!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群