我有一个 df
,其中一些对象列包含 $
、、
、负数和 。
:
Date Person Salary Change
0 11/1/15 Mike $100.52 ($20)
1 11/1/15 Bill $300.11 ($300.22)
2 11/1/15 Jake - ($1,100)
3 11/1/15 Jack $411.43 $500
4 11/1/15 Faye NaN $1,000.12
5 11/1/15 Clay $122.00 $100
6 11/1/15 Dick $1,663.33 -
我想将它们转换为float
,但是当我尝试时:
df['Salary'] = df['Salary'].str.replace(',', '').str.replace('$', '').str.replace('-', '').astype(float)
我得到一个空的ValueError:无法将字符串转换为 float :
。似乎是 -
引起了一些问题,那么有没有一种优雅的方法来处理它?
最佳答案
我会使用普通的 Python 函数,因为它更容易编写和测试:
def conv(txt):
txt = str(txt)
txt = txt.strip()
neg = txt.endswith(')')
try:
val = float(txt.strip('$()-,').replace(',', ''))
except:
val = np.nan
return -val if neg else val
df['Salary'] = df['Salary'].apply(conv)
关于python - 如何将包含 "$ - , "字符的 Panda 字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212482/