Python数据框:如何删除某些字符并更改数据类型?

时间:2019-12-04 13:17:08

标签: python pandas dataframe

我正在使用类似于

的数据集

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']]

但是它似乎什么也没做。运行该程序时我没有收到错误,但美元符号仍然存在。我想从$ lossesrevenue列中删除expenses。然后,我将它们转换为整数数据类型,以便可以按id分组,并使用来找到列的平均值。

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

1 个答案:

答案 0 :(得分:4)

首先,我们需要在此处使用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