需要从前一行的值中填入nN列的NaN值
我正在尝试通过Pandas Dataframe实现以下目标。
创建行列表并将其合并以在行标题中组合列。
下一步,我必须使用ffill()来填充上一行的NaN值。为此,我尝试使用基于r_col(行标题中的列)和c_col(列标题中的列)参数的if条件,但这不是最佳方法,因为c_col和r_col可以是n个列和行。
以下是我针对相同逻辑的代码。
cols = df.iloc[:r_col].astype(str).apply(lambda x: x.name + '__' + '__'.join(x))
df.columns = cols
if (r_col == 2):
for a in range(0, c_col+1):
df = df.iloc[:,:].rename(columns={'Unnamed: ' + str(a) + '__nan':'Column' + str(a)}).ffill()
if (r_col == 3):
for a in range(0, c_col+1):
df = df.iloc[:,:].rename(columns={'Unnamed: ' + str(a) + '__nan__nan':'Column' + str(a)}).ffill()
我需要基于c_col参数在Column header手段中为n个列填充NaN值,并且应该在“ df.column = cols”行之后执行。
答案 0 :(得分:0)
尝试使用df[x].fillna(y)
或df[x].fillna(y, inplace=True)
。 x是您选择的任何列,y是您选择的任何值。例如:
1 0.0001
2 NaN
3 0.03
给予
1 0.0001
2 0.0000
3 0.03
或
list_nan_values = [1,2,3, 21, 44] # variables list to fill NaN with
nan_locations = [1,2,8,19,67] # positional location of NaN in specific column you have selected.
for i in range(len(nan_locations)+1):
df[i] = df[nan_locations[i]].fillna(list_nan_values[i])
享受。