如果用pandas库可以做以下:(不知速度如何,可能有点笨,超过100万行可能会有点慢。高人可以优化一下算法)
import pandas as pd
data= pd.DataFrame(np.random.randn(15, 5),columns=['a', 'b', 'c', 'd', 'e']) #产生15行5列的随机数据
print data #显示处理前data
for e in list(data): #遍历每一列
big10 = np.sort(np.array(data[e].unique()))[len(data)-10] #找出第10大的数字,存在big10里
data.loc[data[e]<big10,e]=0 #小于big10的全设为0
print data #显示处理后data
如果用pandas库可以做以下:(不知速度如何,可能有点笨,超过100万行可能会有点慢。高人可以优化一下算法)
import pandas as pd
import numpy as np
data= pd.DataFrame(np.random.randn(15, 5),columns=['a', 'b', 'c', 'd', 'e']) #随机产生15行5列的dataframe
print data #显示处理前数据
for e in list(data):#遍历所有列
big10 = np.sort(np.array(data[e].unique()))[len(data)-10] #找出每一列的第10大数
data.loc[data[e]<big10,e]=0 #小于这个的设为0
print data #显示处理后数据