我正在寻找一种从对象转换Revenue
列的方法到数字,但仍然保持负值,因为我正试图在下进行操作
df
customerId Revenue
3443 1,323.90
4325 -442
5833 -101
9424 1,539.20
df.types:
customer_ID: int
Revenue: object
df['Revenue'].sum()
这是我迄今为止尝试过但没有成功的方法:这只是将负值转换为正值
df["Revenue"] = pd.to_numeric(df["Revenue"].str.strip().str.replace(",", "")).abs()
通过strip()
、replace()
和astype()
方法尝试:
df['Revenue']=df['Revenue'].str.strip().str.replace(',','').astype(float)
或
通过strip()
、replace()
和to_numeric()
方法:
df['Revenue']=pd.to_numeric(df['Revenue'].str.strip().str.replace(',',''),errors='coerce')
你可以做这样的事情-
>>> import pandas as pd
>>>
>>> d = {
...
... 'customer_id':[3443,4325,5833,9424]
... ,'Revenue':['1,323.90',-442,-101,'1,539.20']
... }
>>>
>>> df = pd.DataFrame(d)
>>>
>>>
>>> df['Revenue']=df.loc[:,'Revenue'].apply(lambda x: str(x).replace(',','')).astype(float)
>>> df
customer_id Revenue
0 3443 1323.9
1 4325 -442.0
2 5833 -101.0
3 9424 1539.2
>>>