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

前端之家收集整理的这篇文章主要介绍了python – 迭代数据框中的某些列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

嗨,我有这样的数据框:

    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

猜你在找的Python相关文章