我正在使用类似于
的数据集 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
和revenue
列中删除expenses
。然后,我将它们转换为整数数据类型,以便可以按id
分组,并使用来找到列的平均值。
df.groupby('id')['losses', 'revenue', expenses'].mean().reset_index()
答案 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