You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双同日期面板数据集处理:城市日均温差值计算函数咨询

嗨,针对你要合并两个日均温数据集并计算同一城市气温差值的需求,我推荐用Python的pandas库或者R的tidyverse工具集来实现,下面是具体的函数和操作步骤:

Python 实现(基于pandas库)

假设你的数据集是以CSV格式存储的,步骤如下:

  • 首先导入pandas并读取两个数据集:
    import pandas as pd
    
    # 读取数据集
    df1 = pd.read_csv("dataset1.csv")
    df2 = pd.read_csv("dataset2.csv")
    
  • 从数据集2中提取每个城市(FUA_CODE)对应的主城市行(也就是每个FUA_CODE分组下的第一行,对应Milano、Roma这类核心城市):
    # 按FUA_CODE分组,保留每个组的第一行(主城市数据)
    df2_main_cities = df2.groupby("FUA_CODE").first().reset_index()
    
  • 合并两个数据集,以FUA_CODE为匹配键:
    # 合并时给两个数据集的日期列添加后缀,区分来源
    merged_df = pd.merge(df1, df2_main_cities, on="FUA_CODE", suffixes=("_df1", "_df2"))
    
  • 计算每个日期的气温差值(或拼接成你想要的"原值 - 对比值"格式):
    # 筛选所有日期列(列名包含日期格式的"-")
    date_columns = [col for col in df1.columns if "-" in col]
    
    # 方式1:计算数值差值
    for col in date_columns:
        merged_df[col] = merged_df[f"{col}_df1"] - merged_df[f"{col}_df2"]
    
    # 方式2:拼接成"原值 - 对比值"的字符串格式(和你理想结果一致)
    for col in date_columns:
        merged_df[col] = merged_df[f"{col}_df1"].astype(str) + " - " + merged_df[f"{col}_df2"].astype(str)
    
  • 最后整理结果,保留需要的列:
    # 保留FUA_CODE和所有日期列
    final_result = merged_df[["FUA_CODE"] + date_columns]
    

R 实现(基于tidyverse工具集)

同样假设数据是CSV格式,步骤如下:

  • 导入tidyverse并读取数据:
    library(tidyverse)
    
    # 读取数据集
    df1 <- read_csv("dataset1.csv")
    df2 <- read_csv("dataset2.csv")
    
  • 提取数据集2中的主城市行:
    # 按FUA_CODE分组,取每个组的第一行
    df2_main_cities <- df2 %>% 
      group_by(FUA_CODE) %>% 
      slice(1) %>% 
      ungroup()
    
  • 合并两个数据集:
    merged_df <- inner_join(df1, df2_main_cities, by = "FUA_CODE")
    
  • 计算差值或拼接字符串:
    # 筛选日期列
    date_columns <- colnames(df1)[str_detect(colnames(df1), "-")]
    
    # 方式1:计算数值差值
    merged_df <- merged_df %>% 
      mutate(across(all_of(date_columns), ~ .x.x - .x.y))
    
    # 方式2:拼接成"原值 - 对比值"的字符串格式
    merged_df <- merged_df %>% 
      mutate(across(all_of(date_columns), ~ str_c(.x.x, " - ", .x.y)))
    
  • 整理最终结果:
    final_result <- merged_df %>% select(FUA_CODE, all_of(date_columns))
    

注意事项

  • 确保两个数据集的FUA_CODE编码完全匹配,日期列的名称和数量一致;
  • 如果数据集2中主城市不是每个分组的第一行,可以通过字符串匹配(比如筛选城市名称不含"outside"的行)来提取;
  • 如果存在缺失值,可以用fillna()(Python)或replace_na()(R)提前处理。

内容的提问来源于stack exchange,提问作者nflore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:07:52