我有一个数据集。假设有 10010 行和 100 列,列值可能包括 NaN,并且每列 NaN 可以不同。
附上不同行数和3列的样本数据集。
我想要
下面这个简化的示例展示了一种可能有用的方法,它使用 pd.quantile。可以根据您的要求开发代码(显然包括分位数参数)。
import pandas as pd
df = pd.DataFrame({'col1': [ 1, 2, 3, 4, None, 6, 7, 8, 54],
'col2': [11, 12, 13, 14, 15, 16, 17, 18, 19] })
col = 'col1'
lo = df[col].quantile(0.1)
hi = df[col].quantile(0.9)
df[col] = df[col].where((df[col]> lo) & (df[col] < hi), None)
mean_val = df[col].mean()
print(df)
print(mean_val)
给出:
col1 col2
0 NaN 11
1 2.0 12
2 3.0 13
3 4.0 14
4 NaN 15
5 6.0 16
6 7.0 17
7 8.0 18
8 NaN 19
5.0