首页 > 解决方案 > Python Dataframes:如何删除某些字符并更改数据类型?

问题描述

我正在使用类似于

id year losses revenue expenses 2 2015 $400,000 $- $230,000 1 2017 $- $750,000 $12,000 3 2011 $- $1,200,000 $750,000 1 2012 $150,000 $250,000 $120,000 2 2006 $120,000 $14,000 $3,000 4 2008 $- $350,000 $120,000 5 2019 $5,000 $- $- 4 2001 $12,000 $- $7,500 4 2004 $50,000 $450,000 $10,000

我想要的结果是按id列分组并找到每列的平均值。的值$-应该被简单地忽略。

id losses revenue expenses 2 400,000 14,000 116,500 1 150,000 500,000 66,000 3 - 1,200,000 750,000 4 31,000 400,000 45,833 5 5,000 - -

我首先尝试$losses列中删除

df['losses'] = [x.lstrip('$') for x in df['losses']]

但它似乎没有做任何事情。我运行它时没有收到错误,但美元符号仍然存在。我希望$losses revenueexpenses列中删除。然后我会将它们转换为整数数据类型,以便我可以分组id并通过使用找到列的平均值

df.groupby('id')['losses', 'revenue', expenses'].mean().reset_index()

标签: pythonpandasdataframe

解决方案


首先我们需要在这里将会计号码转换为数字replace,然后我们groupby

df.replace({'[\$,]': '','-':np.nan},regex=True).astype(float).groupby('id').mean().drop('year',1)
       losses    revenue       expenses
id                                     
1.0  150000.0   500000.0   66000.000000
2.0  260000.0    14000.0  116500.000000
3.0       NaN  1200000.0  750000.000000
4.0   31000.0   400000.0   45833.333333
5.0    5000.0        NaN            NaN

推荐阅读