比如我有两个文件,一个是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