python 老生常谈的找2个excel相同列的行,把其中一个excel行的对应的值放入到另一个excel中

有个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中。

image

 

image

 

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 None

df_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("匹配完成!")

image

 

posted @ 2025-10-03 15:36  秋刀鱼CCC  Views(9)  Comments(0)    收藏  举报