提问人:Zahra 提问时间:9/7/2023 更新时间:9/8/2023 访问量:29
比较 2 个不同形状的数据帧
comparing 2 dataframes with different shape
问:
我有一些特定日期的观测数据。年、日、月的信息分为 3 个不同的列。并且对湿度、温度和...在其他列中。 另一方面,我连续 5 年每天输出模型。我需要将特定日期的每次测量值与该特定日期的模型输出进行比较。你能帮我做到这一点吗?我观察到的数据是 100 多个日期。
我尝试查找但没有成功
答:
0赞
Natália
9/8/2023
#1
@Lambda是正确的,那么使用合并方法是最好的选择。根据您对问题的解释,我创建了具有不同形状的示例数据帧,并将它们合并以比较数据:
import pandas as pd
# Sample observed data
observed_data = {
'Year': [2021, 2022, 2023],
'Month': [1, 3, 5],
'Day': [15, 22, 8],
'Observed_Moisture': [0.4, 0.45, 0.38],
'Observed_Temperature': [25.1, 26.5, 24.8]
}
observed_df = pd.DataFrame(observed_data)
# Sample model data
model_data = {
'Year': [2021, 2021, 2022, 2022, 2023, 2023],
'Month': [1, 2, 3, 4, 5, 6],
'Day': [15, 16, 22, 23, 8, 9],
'Model_Moisture': [0.42, 0.43, 0.44, 0.45, 0.39, 0.4],
'Model_Temperature': [25.0, 25.1, 26.2, 26.3, 24.9, 25.0]
}
model_df = pd.DataFrame(model_data)
# Merge the dataframes on 'Year', 'Month', and 'Day' columns
merged_df = observed_df.merge(model_df, on=['Year', 'Month', 'Day'], how='inner')
# Calculate differences for moisture and temperature
merged_df['Moisture_Difference'] = merged_df['Observed_Moisture'] - merged_df['Model_Moisture']
merged_df['Temperature_Difference'] = merged_df['Observed_Temperature'] - merged_df['Model_Temperature']
# Display the resulting dataframe
print(merged_df)
在此代码中,我使用方法根据 、 和 列组合数据帧,确保“内部”合并仅匹配具有匹配日期的行(因此,两个数据帧的形状差异无关紧要)。最后,我正在计算湿度和温度的差异。merge
Year
Month
Day
对比结果:
Year Month Day Observed_Moisture Observed_Temperature Model_Moisture Model_Temperature Moisture_Difference Temperature_Difference
0 2021 1 15 0.40 25.1 0.42 25.0 -0.02 0.1
1 2022 3 22 0.45 26.5 0.44 26.2 0.01 0.3
2 2023 5 8 0.38 24.8 0.39 24.9 -0.01 -0.1
您也可以使用基于迭代的方法(在该方法中迭代每一行并根据某些条件执行操作),但该方法方法更简洁高效,尤其是对于较大的数据集。merge
评论
merge
)