我正在尝试将以下 DataFrame(包含几个“N/As”)转换为浮动,以便我可以执行百分比更改操作:
d = pd.DataFrame({"A":['N/A','$10.00', '$5.00'],
"B":['N/A', '$10.00', '-$5.00']})
最后,我希望结果是:
(更新:我不想删除原始的 N/A 值。我想将它们作为占位符保留在那里。)
因为没有处理负数的任何标志,所以我不能使用:
pct_change(-1)
所以,我需要使用:
d['A'].diff(-1)/d['A'].shift(-1).abs()
但是,我收到错误:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
第一步,我试图将数据从对象/字符串转换为浮点数,但输出是意外的(对我而言)。我得到浮点数 'NaNs' 而不是实际数字。
>d['A_float'] = pd.to_numeric(d['A'], errors='coerce')
>d
A B A_float
0 N/A N/A NaN
1 $10.00 -$100.00 NaN
2 $5.00 -$5.00 NaN
>d.dtypes
A object
B object
A_float float64
dtype: object
作为一个简单的测试,我尝试从值中减去“1”,但仍然得到浮点“NaN”。
>d['A_float_minus1_test'] = pd.to_numeric(d['A'], errors='coerce')-1
>d
A B A_float A_float_minus1_test
0 N/A N/A NaN NaN
1 $10.00 -$100.00 NaN NaN
2 $5.00 -$5.00 NaN NaN
>d.dtypes
A object
B object
A_float float64
A_float_minus1_test float64
dtype: object
有没有一种简单的方法可以获得以下结果?我的想法是将每个DataFrame列单独更改为浮动,然后执行操作。必须有更简单的方法。
期望的输出:
(更新:我不想删除原始的 N/A 值。我想将它们作为占位符保留在那里。)
慕姐8265434
相关分类