我有 2 個包含測深資料的 csv 檔案 - 單波束和多波束
多波束資料的 CSV 1 如下所示:
| X | 是 | Z |
|---|---|---|
| 626066.4 | 234058.2 | 6.69 |
| 626066.4 | 234059.2 | 6.89 |
| 626066.4 | 234060.2 | 7.06 |
包含單波束資料的 CSV 2 如下所示:
| X | 是 | 一種 | 乙 | C |
|---|---|---|---|---|
| 627839 | 232463.4 | 14.22 | 14.46 | 14.71 |
| 627839 | 232463.1 | 14.22 | 14.46 | 14.71 |
我想使用 Pandas 合并 2 個 CSV,如下所示:
- CSV2 的 X 和 Y 坐標與 CSV 1 的預先存在的 X、Y 坐標相結合
- CSV 2(A、B 或 C)的指定 Z 值與 CSV 1 Z 值組合
通過這種方式,我將擁有一個調查區域的組合 xyz 資料集,由于多光束和單光束資料的組合,該資料集顯然會更準確。
為了澄清起見,我想最終得到明智的結果是:
| X | 是 | Z |
|---|---|---|
| 626066.4 | 234058.2 | 6.69 |
| 626066.4 | 234059.2 | 6.89 |
| 626066.4 | 234060.2 | 7.06 |
| 627839 | 232463.4 | 14.22 |
| 627839 | 232463.1 | 14.22 |
我已經嘗試了下面的代碼片段,但需要一種基于 CSV 2 的指定列組合 X、Y 和 Z 的方法。
import pandas as pd
# Read the files into two dataframes.
df1 = pd.read_csv('CSV1.csv')
df2 = pd.read_csv('CSV2.csv')
# Merge the two dataframes, using _ID column as key
df3 = pd.merge(df1, df2, on = 'X')
df3.set_index('X', inplace = True)
# Write it to a new CSV file
df3.to_csv('CSV3.csv')
uj5u.com熱心網友回復:
IIUC你希望能夠告訴你哪些功能列被處理為Z中df2,然后CONCAT兩個串列:
def concat_df_on_z(df1, df2, z_col):
df2 = df2[['X', 'Y', z_col]].rename(columns={z_col: 'Z'})
return pd.concat([df1, df2])
df3 = concat_df_on_z(df1, df2, 'B')
print(df3)
輸出:
X Y Z
0 626066.4 234058.2 6.69
1 626066.4 234059.2 6.89
2 626066.4 234060.2 7.06
0 627839.0 232463.4 14.46
1 627839.0 232463.1 14.46
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357506.html
