有个excel叫典型草原降水强度,还有个excel叫典型草原数浓度,这两个excel里面time和data_name列,time列里面的数据格式是YYYY-M-D空格H:S,data_name列里面是XXXX-时间戳,53192-20240510101700-20240510105559-0_N_R_clusum_one.txt这样的,咱们就根据前面的这个XXXXX和time列,来找相同的匹配的行,然后把典型草原降水强度excel中的找到的匹配R写入到典型草原数浓度excel中。
import pandas as pd import re# 读取文件 df_intensity = pd.read_excel('/典型草原降水强度.xlsx') df_concentration = pd.read_excel('/典型草原数浓度.xlsx')# 处理时间和站号 df_intensity['time'] = pd.to_datetime(df_intensity['time']) df_concentration['time'] = pd.to_datetime(df_concentration['time'])def extract_station_id(data_name):match = re.match(r'^(\d{5})', str(data_name))return match.group(1) if match else Nonedf_intensity['station_id'] = df_intensity['data_name'].apply(extract_station_id) df_concentration['station_id'] = df_concentration['data_name'].apply(extract_station_id)# 匹配R值 df_intensity['match_key'] = df_intensity['station_id'] + '_' + df_intensity['time'].dt.strftime('%Y%m%d%H%M') df_concentration['match_key'] = df_concentration['station_id'] + '_' + df_concentration['time'].dt.strftime('%Y%m%d%H%M')r_map = df_intensity.set_index('match_key')['R'].to_dict() df_concentration['R'] = df_concentration['match_key'].map(r_map)# 保存结果 result_df = df_concentration.drop(['station_id', 'match_key'], axis=1) result_df.to_excel('/典型草原数浓度_添加R值.xlsx', index=False)print("匹配完成!")