我有一个带有1列的数据框。 -我想在开始和结束时完全消除许多NA值。 -同时,在2个可用值之间有一些NA值,我想用2个闭合可用值的平均值来填充它们。 为了说明,我在此附上图像供您想象。 我想不出任何解决方案。只是想知道是否有人可以帮助我。
感谢您的帮助
] 1首先,如果每个N / A均为字符串格式,则用np.nan
替换。最直接的方法是在给定的列上使用isnan
,然后提取真实的索引(例如使用np.arange
数组上的结果)。从那里,您可以使用for来迭代索引以检查索引是否是顺序的,或者计算连续元素之间的距离以查找不等于1的元素。
尝试一下,我通过使用随机数重现了示例
import pandas as pd
import numpy as np
random_index = np.random.randint(0,100,size=(5,1))
random_range = np.arange(10,15)
df = pd.DataFrame(np.random.randint(0,size=(100,1)),columns=list('A'))
df.loc[10:15,'A'] = "#N/A"
for c in random_index:
df.loc[c,"A"] = "#N/A"
// replacing start from here
df[df=="#N/A"]= np.nan
index = list(np.where(df['A'].isna()))[0]
drops = []
for i in index:
if pd.isnull(df.loc[(i-1),"A"]) is False and pd.isnull(df.loc[(i+1),"A"]) is False:
df.loc[i,"A"] = (df.loc[(i-1),"A"]+df.loc[(i+1),"A"])/2
else:
drops.append(i)
df = df.drop(df.index[drops]).reset_index(drop=True)