python 如何将DataFrame列中的零替换为附近的值?

edqdpe6u  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(233)

我无法在DataFrame表列中添加插入平均值而不是零。
我有一个单表DataFrame -它是一个单列。
我正尝试从这列中删除零,并用附近的最近值替换它们。
有没有可能想出类似的办法?
我想了很久,但什么也想不出来。
我将非常感谢任何信息。

i = 2
for i in range(len(df)):
    if df.loc[i, "t"] != 0 and df.loc[i-3, "t"] != 0:
        df.at[i-2, "t"] = df.at[i-3, "t"]
        df.at[i-1, "t"] = df.at[i, "t"]
    i = i + 1
i = 0
    for i in range(len(df)):
        if df.loc[i, "t"] == 0 and i < (len(df)-1):
            if df.loc[i+1, "t"] != 0:
                df.at[i, "t"] = df.at[i+1, "t"]
        elif df.loc[i, "t"] == 0 and df.loc[i+3, "t"] == 0 and i < (len(df)-1):
            if df.loc[i-1, "t"] != 0:
                df.at[i, "t"] = df.at[i-1, "t"]
        i = i + 1
0
0
-1.2
0
0
-3.5
0
0
1.59
0
0
2.93
0
0
-4.7
0
0
4.36
0
0
2.18
0

--

-1.2
-1.2
-1.2
-1.2
-3.5
-3.5
-3.5
1.59
1.59
1.59
2.93
2.93
2.93
-4.7
-4.7
-4.7
4.36
4.36
4.36
2.18
2.18
2.18

--

-1.2
-1.2
-1.2 = (-1.2 + -3.5) / 2
-1.2 = (-1.2 + -3.5) / 2
-3.5
-3.5 = (-3.5 + 1.59) / 2
-3.5 = (-3.5 + 1.59) / 2
1.59
1.59
1.59
2.93
2.93
2.93
-4.7
-4.7
-4.7
4.36
4.36
4.36
2.18
2.18
2.18
vhmi4jdf

vhmi4jdf1#

您可以使用类似于以下内容的内容:首先,用nan填充零。

df['col']=df['col'].replace(0,np.nan)

然后使用fillna()method参数:

df['col']=df['col'].fillna(method='ffill') #'backfill', 'bfill', 'pad', 'ffill'

或使用interpolate()

df['col']=df['col'].interpolate(method='nearest')

相关问题