Python 基于具有相似名称的列来子集行

Python 基于具有相似名称的列来子集行,python,pandas,dataframe,Python,Pandas,Dataframe,假设有一个像图中那样的数据帧,我想用与之类似的另一个变量的值填充na值。更清楚地说,我的变量是 平均值1,平均值2,标准1,标准2。。。最小值1,最小值2… 所以我想用其他列的值填充na值,但不是所有列,只有那些代表相同度量的列,在图中我突出显示了2个na值。第一个我想用第2行变量‘mean’的平均值来填充它,而第二个我想用第9行变量‘MIN’的平均值来填充它。有办法吗 是的,可以使用循环执行。下面是一个天真的方法,但即使是对那些喜欢的人来说,也没有太多的优化(至少我没有看到他们) 您可以找到唯

假设有一个像图中那样的数据帧,我想用与之类似的另一个变量的值填充na值。更清楚地说,我的变量是

平均值1,平均值2,标准1,标准2。。。最小值1,最小值2…

所以我想用其他列的值填充na值,但不是所有列,只有那些代表相同度量的列,在图中我突出显示了2个na值。第一个我想用第2行变量‘mean’的平均值来填充它,而第二个我想用第9行变量‘MIN’的平均值来填充它。有办法吗


是的,可以使用循环执行。下面是一个天真的方法,但即使是对那些喜欢的人来说,也没有太多的优化(至少我没有看到他们)


您可以找到唯一的前缀,遍历每个前缀,并分别对子集执行
fillna

uniq_prefixes = set([x.split('_')[0] for x in df.columns])

for prfx in uniq_prefixes:
    mask = [col for col in df if col.startswith(prfx)]
    # Transpose is needed because row wise fillna  is not implemented yet
    df.loc[:,mask] = df[mask].T.fillna(df[mask].mean(axis=1)).T

因为我有很多度量和行,所以我想通过一个循环来实现,我想基于变量的相似名称创建子集,这可能吗?这有意义吗?
uniq_prefixes = set([x.split('_')[0] for x in df.columns])

for prfx in uniq_prefixes:
    mask = [col for col in df if col.startswith(prfx)]
    # Transpose is needed because row wise fillna  is not implemented yet
    df.loc[:,mask] = df[mask].T.fillna(df[mask].mean(axis=1)).T