[英]How to merge and resample two messy datasets with pandas
我有兩個具有深度范圍和變量的鑽孔數據集,我想重新采樣並合並在一起。
數據集 1 具有深度范圍,例如 2m 到 3m,每個范圍都有變量。 我采用了這些范圍並使用 pandas df.explode
將它們分解為單獨的間隔
數據集 1:
Depth_From Depth_To Variable_1
0 1 x
2 3 x
4 5 x
變成這樣:
Depth_Expl Variable_1
0 x
1 x
2 x
3 x
...
第二個數據集具有相似的范圍,但它們不像第一個數據集那樣按深度順序排列,並且在某些情況下深度范圍也重疊。
我想將這些深度從最低到最高重新組織,並將它們與之前的數據集類似地分解。 由於重疊范圍而重疊的任何變量我只想取平均值,並且對於每個 1m 的單個深度間隔有 1 個變量結果。 不知道如何 go 關於這個。
數據集 2:
Depth_From Depth_To Variable_2
3 6 x
0 2 x
2 3 x
7 8 x
總的來說,我正在嘗試重塑和合並兩個數據集,如下所示:
Depth_Expl Variable_1 Variable_2
0 x x
1 x x
2 x x
3 x x
每個數據集都以 1m 為基礎重新采樣,每個變量有 1 個答案。 任何指針將不勝感激。
根據您期望的 output,我猜您想:
Depth_From
和Depth_To
列折疊成一個名為Depth_Expl
的列Depth_Expl
列組合兩個數據框如果是這樣,您可以使用pd.melt()
代替pd.explode
並使用pd.merge()
來組合表格。
嘗試這個:
# Collapse Depth_From and Depth_To columns
df1 = pd.melt(df1, id_vars = 'Variable_1', var_name = 'col_names', value_name='Depth_Expl').drop(columns=['col_names'])
df2 = pd.melt(df2, id_vars = 'Variable_2', var_name = 'col_names', value_name='Depth_Expl').drop(columns=['col_names'])
# Combine two dataframes
df_merge = pd.merge(df1, df2, on='Depth_Expl', how='outer').sort_values('Depth_Expl')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.