如何将某些内容应用于我的每一列?

时间:2019-04-02 19:59:03

标签: python-3.x pandas jupyter-notebook data-science

我开始研究数据科学,并尝试预处理数据集。我有11列(col1到col11),我想将其应用于其中的每一列:

第二列女巫的例子是col2

col2Media = df['col2'][df['col2'] != '-'].astype(str).astype(int).values.mean() 

df['col2'] = df['col2'].apply(lambda x: col2Media.astype(int) if x == '-' else x)

这就像 C 中的 for ,其中 i 作为列索引:

for (i = 1; i < 12; i++) { 
    MediaCol(i) = df['col(i)'][df['col(i)'] != '-'].astype(str).astype(int).values.mean() 
    df['col(i)'] = df['col(i)'].apply(lambda x: MediaCol(i).astype(int) if x == '-' else x)
}

1 个答案:

答案 0 :(得分:2)

一种方法是在python中编写相同的循环。我想colMedia仅用作临时系列。

for i in range(1,12):
    colMedia = df['col'+str(i)][df['col'+str(i)] != '-'].astype(str).astype(int).values.mean() 
    df['col'+str(i)] = df['col'+str(i)].apply(lambda x: colMedia.astype(int) if x == '-' else x)

或者如果col1col11是数据框的唯一列:

for col in df:
    colMedia = df[col][df[col] != '-'].astype(str).astype(int).values.mean() 
    df[col] = df[col].apply(lambda x: colMedia.astype(int) if x == '-' else x)