楼主: ujmko
4414 4

pandas dataframe 代码求助 [推广有奖]

  • 0关注
  • 3粉丝

已卖:583份资源

副教授

50%

还不是VIP/贵宾

-

威望
0
论坛币
2074 个
通用积分
1.9762
学术水平
17 点
热心指数
24 点
信用等级
15 点
经验
17296 点
帖子
494
精华
0
在线时间
215 小时
注册时间
2005-10-27
最后登录
2020-8-24

楼主
ujmko 发表于 2016-2-5 21:00:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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  啊?

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

扫码加我 拉你入群

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

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

关键词:Dataframe pandas panda Frame Data return 数据表 如何

沙发
钱小二 发表于 2016-2-6 06:11:48
(g.col1 - g.col1.shift(1)) / g.col1.shift(1)
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
ujmko 发表于 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。

报纸
ujmko 发表于 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 ...
了解了,非常感学,新年快乐!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 20:29