我有一个类似这样的DataFrame:
AD1 AD2 AD3 AD4 AD5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 0 0
.. ... ... ... ... ...
497 138099424 126282256 0 197637664 0
498 90184696 53508360 90254688 66803036 57421672
499 41476688 54889712 36677268 33858400 50282272
500 26322476 27609302 26245020 20566374 23664970
501 595136256 241994400 489766144 314901408 730741120
我需要找出每一行的平均值,忽略值为0的情况。我的初始计划是将0替换为NaN,然后在排除NaN的情况下获取平均值。
我尝试用NaN替换0,但这没有生效,DataFrame仍包含0。我尝试了:
df = df.replace(0, np.nan)
df = df.replace(0, np.nan, inplace=True)
第二个问题是,即使知道会包括0,当我尝试计算平均数时,也无法计算出平均数。我使用了:
df = df.assign(mean=df.mean(axis=1))
结果是:
AD1 AD2 AD3 AD4 AD5 mean
1 0 0 0 0 0 NaN
2 0 0 0 0 0 NaN
3 0 0 0 0 0 NaN
4 0 0 0 0 0 NaN
5 0 0 0 0 0 NaN
.. ... ... ... ... ... ...
497 138099424 126282256 0 197637664 0 NaN
498 90184696 53508360 90254688 66803036 57421672 NaN
499 41476688 54889712 36677268 33858400 50282272 NaN
500 26322476 27609302 26245020 20566374 23664970 NaN
501 595136256 241994400 489766144 314901408 730741120 NaN
我该如何完成这个任务?
df=df.astype(float)
。 - user7864386