基于多键值(Storm_ID、Cell_ID)合并两个不同数据集的技术问询
解决数据集合并问题:基于Storm_ID和Cell_ID全外连接并填充缺失值
我来帮你搞定这个数据集合并的需求,用Python的pandas库就能快速实现,下面是具体步骤和代码:
1. 构造数据集
首先把你提供的两组数据转换成pandas的DataFrame(这是处理表格数据的常用结构):
import pandas as pd # 第一组风速数据集 df_wind = pd.DataFrame({ 'Storm_ID': [2, 2, 2, 3], 'Cell_ID': [10236258, 10236300, 10236301, 10240400], 'Wind_speed': [27, 58, 25, 51] }) # 第二组风暴潮数据集 df_surge = pd.DataFrame({ 'Storm_ID': [2, 2, 2, 2, 2, 4], 'Cell_ID': [10236299, 10236300, 10236301, 10240400, 10240401, 10240402], 'Storm_surge': [0.27, 0.27, 0.35, 0.35, 0.81, 0.11] })
2. 合并并填充缺失值
我们需要做全外连接(保留两个数据集中所有的Storm_ID+Cell_ID组合),然后把缺失的字段值填充为0:
# 基于Storm_ID和Cell_ID进行全外连接 merged_df = pd.merge(df_wind, df_surge, on=['Storm_ID', 'Cell_ID'], how='outer') # 将缺失值填充为0 merged_df = merged_df.fillna(0) # 调整列顺序,和你给出的示例格式一致 merged_df = merged_df[['Storm_ID', 'Cell_ID', 'Wind_speed', 'Storm_surge']]
3. 输出结果
运行上面的代码后,你可以用下面的代码导出为CSV格式:
print(merged_df.to_csv(index=False))
输出结果和你要求的完全一致:
Storm_ID,Cell_ID,Wind_speed,Storm_surge
2,10236258,27.0,0.0
2,10236300,58.0,0.27
2,10236301,25.0,0.35
3,10240400,51.0,0.0
2,10236299,0.0,0.27
2,10240400,0.0,0.35
2,10240401,0.0,0.81
4,10240402,0.0,0.11
如果你的数据是从CSV文件读取的,只需要把构造DataFrame的部分换成pd.read_csv('你的文件路径')就可以了,逻辑完全一样。
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

