Ale*_*x T 5 python dataframe pandas
嗨,我有这样的数据框:
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%
Run Code Online (Sandbox Code Playgroud)
首先,我想将包含数字(当前是字符串)的列中的值转换为浮点值.所以在这里我将有4个需要转换浮动的中间列.简单的循环是否适合这种情况?
第二,最后一列存在一个问题,'Dividend'其中百分比值为字符串.事实上,我可以将其转换为小数,但我想是否有办法仍然保留%,并且值仍然可以计算.
对这两个问题的任何想法?
计划
'Ticker'因为它不是数字assign覆盖Dividend%applywithpd.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
Run Code Online (Sandbox Code Playgroud)
更多行
更具可读性
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
Run Code Online (Sandbox Code Playgroud)