我有如下表所示的 csv 檔案:
| 深度 | x1 | ×2 | x3 |
|---|---|---|---|
| 深度 | x1 | ×2 | x3 |
| 1000 | 南 | 南 | 南 |
| 1001 | 南 | 南 | 南 |
| 1002 | 南 | 南 | 南 |
| 1003 | 南 | 10 | 南 |
| 1004 | 南 | 南 | 南 |
| 1005 | 南 | 南 | 10 |
| 1006 | 南 | 南 | 南 |
| 1007 | 10 | 南 | 南 |
| 1008 | 11 | 南 | 南 |
| 1009 | 12 | 南 | 南 |
| 1010 | 13 | 南 | 南 |
| 1011 | 14 | 南 | 15 |
| 1012 | 15 | 20 | 南 |
| 1013 | 南 | 南 | 南 |
| 1014 | 南 | 南 | 南 |
| 1015 | 18 | 南 | 南 |
| 1016 | 19 | 南 | 南 |
| 1017 | 20 | 南 | 南 |
| 1018 | 21 | 南 | 20 |
| 1019 | 22 | 南 | 南 |
| 1020 | 23 | 南 | 南 |
| 1021 | 24 | 25 | 南 |
| 1022 | 25 | 南 | 南 |
| 1023 | 26 | 南 | 南 |
| 1024 | 27 | 南 | 25 |
| 1025 | 28 | 15 | 南 |
| 1026 | 南 | 南 | 南 |
| 1027 | 南 | 南 | 南 |
| 1028 | 南 | 南 | 南 |
我想在第一個和最后一個有效值之間進行插值,然后用零填充 Nan 值,結果應該是這樣的
| 深度 | x1 | ×2 | x3 |
|---|---|---|---|
| 1000 | 0 | 0 | 0 |
| 1001 | 0 | 0 | 0 |
| 1002 | 0 | 0 | 0 |
| 1003 | 0 | 10 | 0 |
| 1004 | 0 | 11.11111111 | 0 |
| 1005 | 0 | 12.22222222 | 10 |
| 1006 | 0 | 13.33333333 | 10.83333333 |
| 1007 | 10 | 14.44444444 | 11.66666667 |
| 1008 | 11 | 15.55555556 | 12.5 |
| 1009 | 12 | 16.66666667 | 13.33333333 |
| 1010 | 13 | 17.77777778 | 14.16666667 |
| 1011 | 14 | 18.88888889 | 15 |
| 1012 | 15 | 20 | 15.71428571 |
| 1013 | 16 | 20.55555556 | 16.42857143 |
| 1014 | 17 | 21.11111111 | 17.14285714 |
| 1015 | 18 | 21.66666667 | 17.85714286 |
| 1016 | 19 | 22.22222222 | 18.57142857 |
| 1017 | 20 | 22.77777778 | 19.28571429 |
| 1018 | 21 | 23.33333333 | 20 |
| 1019 | 22 | 23.88888889 | 20.83333333 |
| 1020 | 23 | 24.44444444 | 21.66666667 |
| 1021 | 24 | 25 | 22.5 |
| 1022 | 25 | 22.5 | 23.33333333 |
| 1023 | 26 | 20 | 24.16666667 |
| 1024 | 27 | 17.5 | 25 |
| 1025 | 28 | 15 | 25 |
| 1026 | 28 | 0 | 0 |
| 1027 | 28 | 0 | 0 |
| 1028 | 28 | 0 | 0 |
我已經嘗試了下面的代碼,但它沒有給出正確的結果
import pandas as pd
df = pd.read_csv(r"C:\Users\mohamed\OneDrive\Desktop\test_interpolate.csv")
df = df.interpolate()
df = df.fillna(0)
print (df)
df.to_csv(r"C:\Users\mohamed\OneDrive\Desktop\result.csv")
uj5u.com熱心網友回復:
您可以使用以下方法限制對內部 NaN 的插值limit_area='inside'(這在 的檔案中有很好的介紹interpolate):
df = df.interpolate(limit_area='inside').fillna(0)
輸出:
depth x1 x2 x3
0 1000 0.0 0.000000 0.000000
1 1001 0.0 0.000000 0.000000
2 1002 0.0 0.000000 0.000000
3 1003 0.0 10.000000 0.000000
4 1004 0.0 11.111111 0.000000
5 1005 0.0 12.222222 10.000000
6 1006 0.0 13.333333 10.833333
7 1007 10.0 14.444444 11.666667
8 1008 11.0 15.555556 12.500000
9 1009 12.0 16.666667 13.333333
10 1010 13.0 17.777778 14.166667
11 1011 14.0 18.888889 15.000000
12 1012 15.0 20.000000 15.714286
13 1013 16.0 20.555556 16.428571
14 1014 17.0 21.111111 17.142857
15 1015 18.0 21.666667 17.857143
16 1016 19.0 22.222222 18.571429
17 1017 20.0 22.777778 19.285714
18 1018 21.0 23.333333 20.000000
19 1019 22.0 23.888889 20.833333
20 1020 23.0 24.444444 21.666667
21 1021 24.0 25.000000 22.500000
22 1022 25.0 22.500000 23.333333
23 1023 26.0 20.000000 24.166667
24 1024 27.0 17.500000 25.000000
25 1025 28.0 15.000000 0.000000
26 1026 0.0 0.000000 0.000000
27 1027 0.0 0.000000 0.000000
28 1028 0.0 0.000000 0.000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/400752.html
上一篇:從函式創建資料框
