簡體   English   中英

將 pandas dataframe 中的某些值替換為該行的模式

[英]Replace certain values in pandas dataframe with mode of that row

我有一個像這樣的 DataFrame:

ColA      ColB  ColC  ColD  ColE

Male       1     0     ?     1
Female     1     1     ?     1
Male       0     0     0     1
Female     1     0     0     ?
Female     1     1     1     ?

它有幾個? 始終。 我想用模式(每行的最常見值)替換這些 - 不包括第一列。

我做了這樣的事情,但沒有返回我想要的:

df.replace("?", np.nan, inplace = True)     
df_new = df.apply(lambda row: row.fillna(row[1:].mode()), axis = 1)

對於fillna我們只能用帶有系列的column來填充,所以我們需要T ,對於我們可以在apply之外執行的mode

df_new = df.T.fillna(df.iloc[:,1:].astype(float).mode(axis=1)[0]).T
df_new
     ColA ColB ColC ColD ColE
0    Male    1    0  1.0    1
1  Female    1    1  1.0    1
2    Male    0    0    0    1
3  Female    1    0    0  0.0
4  Female    1    1    1  1.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM