numpy数据筛选+pandas拼接文件(含enumerate)

比如我有两个文件,一个是aqi国控站点的所有站点信息,包括经纬度,站名,城市信息,如:


image.png

将JJJ的挑出来,且满足urbanid=1的站点

fname='/home/wangnan/data/aqi/urbansite.xlsx'
df=pd.read_excel(fname)
df
j1=df[((df.province=='北京') & (df.urbanind==1)) | \
      ((df.province=='天津') & (df.urbanind==1)) | \
      ((df.province=='河北') & (df.urbanind==1))]
j1.sitenum
image.png

对比两个文件,根据A文件的信息,去找B文件相同站点,并获取B文件的内容
用到enumerate, 返回序列的位置i,和对应此位置的数据v

fname='/data2/PUB_DATA/Observation/AQI_station/2019/stationlist.csv'
base=pd.read_csv(fname) #A文件
jjj='/home/wangnan/aqi_data_v2/post_data/urban_jjj.txt'
jid=pd.read_csv(jjj,sep='\\s+',skiprows=[0],header=None)
jid.columns=['id']   #eg 1003
jd=jid.id
jd=[np.str(i)+'A' for i in jd] # 1003-> 1003A
st=base['监测点编码']   #eg. 1003A
ind=[i for i,v in enumerate(st) if v in jd]   #在A文件st中返回其id和值v,并判断v是否在B文件jd中
jout=base.loc[ind]                #把在B文件的id挑出来
jout.to_csv('latlon_jjj.csv',index=False)

N多个文件,内容一样,竖排拼接

region='jjj/'
flist='/home/wangnan/aqi_data_v2/post_data/'+region
year=np.linspace(2014,2021,8)
yr=[np.str(int(i)) for i in year]
ff=[]
for i in range(len(yr)):
#for i in np.arange(1):
    fname=flist+'month_'+region[0:3]+yr[i]+'_result.txt'
    print(fname)
    df=pd.read_csv(fname,sep='\\s+',skiprows=[0],header=None)
    df.columns=['month','no2','o3_8hmax']
    ff.append(df)

f1=pd.concat(ff,axis=0)  #axis可选0 1 按行、列拼接
f1.to_csv(flist+'month_'+region[0:3]+'_concat.csv')
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容