我有一個csv包含多個包含數值的列的檔案。但是,某些行在一列或多列中缺少值。缺失值由“x”表示。
我將如何使用 Pandas 將所有缺失值 ('x') 替換為其列中所有值的平均值?
df= pd.read_csv('file.csv')
uj5u.com熱心網友回復:
avg = df[column].mean()
df[column] = df[column].apply(lambda v: avg if v=="x" else v)
uj5u.com熱心網友回復:
首先要識別的是其中包含“x”的列不是整數。它們是物件。
df = pd.read_csv('file.csv')
df
Col1 Col2
0 1 22
1 2 44
2 3 x
3 4 88
4 5 110
5 6 132
6 7 x
7 8 176
8 9 198
9 10 x
df.dtypes
Col1 int64
Col2 object
dtype: object
為了得到 Col2 的均值,需要將其轉換為數值。
df['Col2'] = pd.to_numeric(df['Col2'], errors='coerce').astype('Int64')
df.dtypes
Col1 int64
Col2 Int64
dtype: object
df 現在看起來像這樣:
df
Col1 Col2
0 1 22
1 2 44
2 3 <NA>
3 4 88
4 5 110
5 6 132
6 7 <NA>
7 8 176
8 9 198
9 10 <NA>
現在我們可以將 fillna() 與 df['Col2'].mean() 一起使用:
df['Col2'] = df['Col2'].fillna(df['Col2'].mean())
df
Col1 Col2
0 1 22
1 2 44
2 3 110
3 4 88
4 5 110
5 6 132
6 7 110
7 8 176
8 9 198
9 10 110
uj5u.com熱心網友回復:
您將遇到計算具有非數字值(例如“x”)的列的平均值的問題。您必須先解決該問題,例如 with df = df.replace('x',np.nan)(僅當x是唯一的非數字值時才有效),然后您可以執行df = df.fillna(df.mean()). 如果您從整數開始,其中的列x將被轉換為浮點數(即使是未被替換的行),因此如果您不想要那樣,您將不得不做更多的作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355462.html
上一篇:如何根據另一列中的重復值添加一列中的行,并最終將第一行保留在python中?
下一篇:從初始值開始的數字累積差
