如何使用pandas计算带有NaN值的中位数?

3
我有一个导入的csv文件,其中有59列。我想计算每一列的中位数。
每一列都有NaN值和实数整数值的混合,行也是如此。

enter image description here

我必须保留所有记录,因为每一行都有有效的测量值,如果按列或行删除NaN值,我的数据集将为空。
我曾将NaN设置为零,但无法忽略0值。
目前,我使用站点编号和另一个相应的测量值,并将每列的NaN值作为独立单元进行删除,但这非常耗时。
在这种数据情况下,是否有更好的计算中位数的方法?

2
请将该数据框以文本形式发布,而不是作为图片。 - undefined
1个回答

10

pandas.DataFrame.median默认情况下会忽略NaN/null值,如果要包括这些值,必须显式将skipna标志更改为False

df = pd.DataFrame({'col1': [1,2,3,np.nan, 4,5], 'col2': [4,5,6,np.nan, np.nan,7]})

df.median()

col1    3.0
col2    5.5
dtype: float64

df.median(skipna=False)

col1   NaN
col2   NaN
dtype: float64

2
只需使用df.median()就可以了:D,默认行为是忽略NaN - undefined
之前我运行的代码没有起作用,所以我认为我需要去除NaN值(根据错误信息)。我删除了之前不起作用的代码,尝试了一个新的方法,虽然成功了但花费了很长时间。将来我会发布哪些方法不起作用的内容。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接