【发布时间】:2022-01-01 18:24:46
【问题描述】:
我有如下表的 csv 文件:
| depth | x1 | x2 | x3 |
|---|---|---|---|
| depth | x1 | x2 | x3 |
| 1000 | Nan | Nan | Nan |
| 1001 | Nan | Nan | Nan |
| 1002 | Nan | Nan | Nan |
| 1003 | Nan | 10 | Nan |
| 1004 | Nan | Nan | Nan |
| 1005 | Nan | Nan | 10 |
| 1006 | Nan | Nan | Nan |
| 1007 | 10 | Nan | Nan |
| 1008 | 11 | Nan | Nan |
| 1009 | 12 | Nan | Nan |
| 1010 | 13 | Nan | Nan |
| 1011 | 14 | Nan | 15 |
| 1012 | 15 | 20 | Nan |
| 1013 | Nan | Nan | Nan |
| 1014 | Nan | Nan | Nan |
| 1015 | 18 | Nan | Nan |
| 1016 | 19 | Nan | Nan |
| 1017 | 20 | Nan | Nan |
| 1018 | 21 | Nan | 20 |
| 1019 | 22 | Nan | Nan |
| 1020 | 23 | Nan | Nan |
| 1021 | 24 | 25 | Nan |
| 1022 | 25 | Nan | Nan |
| 1023 | 26 | Nan | Nan |
| 1024 | 27 | Nan | 25 |
| 1025 | 28 | 15 | Nan |
| 1026 | Nan | Nan | Nan |
| 1027 | Nan | Nan | Nan |
| 1028 | Nan | Nan | Nan |
我想在第一个和最后一个有效值之间进行插值,然后用零填充 Nan 值 结果应该是这样的
| depth | x1 | x2 | 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")
【问题讨论】: