加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 迭代数据框中的某些列

发布时间:2020-12-16 22:39:05 所属栏目:Python 来源:网络整理
导读:嗨,我有这样的数据框: Ticker P/E P/S P/B P/FCF DividendNo. 1 NTCT 457.32 3.03 1.44 26.04 -2 GWRE 416.06 9.80 5.33 45.62 -3 PEGA 129.02 4.41 9.85 285.10 0.28%4 BLKB 87.68 4.96 14.36 41.81 0.62% 首先,我想将包含数字(当前是字符串)的列中的值转

嗨,我有这样的数据框:

    Ticker  P/E     P/S     P/B    P/FCF    Dividend
No.                     
1   NTCT    457.32  3.03    1.44    26.04   -
2   GWRE    416.06  9.80    5.33    45.62   -
3   PEGA    129.02  4.41    9.85    285.10  0.28%
4   BLKB    87.68   4.96    14.36   41.81   0.62%

首先,我想将包含数字(当前是字符串)的列中的值转换为浮点值.所以在这里我将有4个需要转换浮动的中间列.简单的循环是否适合这种情况?

第二,最后一栏’Dividend’存在问题,其中百分比值为字符串.事实上,我可以将其转换为小数,但我想是否有办法仍然保留%,并且值仍然可以计算.

对这两个问题的任何想法?

最佳答案
计划

>取出’Ticker’,因为它不是数字
>使用assign来通过去除%来覆盖Dividend
>使用pd.to_numeric应用转换所有列
>使用eval将Dividend设置为适当的小数空间

df[['Ticker']].join(
    df.assign(
        Dividend=df.Dividend.str.strip('%')
    ).drop('Ticker',1).apply(
        pd.to_numeric,errors='coerce'
    )
).eval('Dividend = Dividend / 100',inplace=False)

    Ticker     P/E   P/S    P/B   P/FCF  Dividend
No.                                              
1     NTCT  457.32  3.03   1.44   26.04       NaN
2     GWRE  416.06  9.80   5.33   45.62       NaN
3     PEGA  129.02  4.41   9.85  285.10    0.0028
4     BLKB   87.68  4.96  14.36   41.81    0.0062

更多行
更具可读性

nums = df.drop('Ticker',1).assign(Dividend=df.Dividend.str.strip('%'))
nums = nums.apply(pd.to_numeric,errors='coerce')
nums = nums.assign(Dividend=nums.Dividend / 100)
df[['Ticker']].join(nums)

    Ticker     P/E   P/S    P/B   P/FCF  Dividend
No.                                              
1     NTCT  457.32  3.03   1.44   26.04       NaN
2     GWRE  416.06  9.80   5.33   45.62       NaN
3     PEGA  129.02  4.41   9.85  285.10    0.0028
4     BLKB   87.68  4.96  14.36   41.81    0.0062

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读