我有一个python pandas数据帧,它有几列,其中一列有0
值。我想用此列的median
或mean
替换0
值。
data
是我的数据帧
artist_hotness
是该列
mean_artist_hotness = data['artist_hotness'].dropna().mean()
if len(data.artist_hotness[ data.artist_hotness.isnull() ]) > 0:
data.artist_hotness.loc[ (data.artist_hotness.isnull()), 'artist_hotness'] = mean_artist_hotness
我试过了,但它不起作用。
发布于 2016-05-29 13:53:32
使用pandas
replace
方法:
df = pd.DataFrame({'a': [1,2,3,4,0,0,0,0], 'b': [2,3,4,6,0,5,3,8]})
df
a b
0 1 2
1 2 3
2 3 4
3 4 6
4 0 0
5 0 5
6 0 3
7 0 8
df['a']=df['a'].replace(0,df['a'].mean())
df
a b
0 1 2
1 2 3
2 3 4
3 4 6
4 1 0
5 1 5
6 1 3
7 1 8
发布于 2016-05-29 14:14:02
data['artist_hotness'] = data['artist_hotness'].map( lambda x : data.artist_hotness.mean() if x == 0 else x)
发布于 2018-06-20 05:27:36
我发现这些非常有用,尽管mask
非常慢(不知道为什么)。
我这样做了:
df.loc[ df['artist_hotness'] == 0 | np.isnan(df['artist_hotness']), 'artist_hotness' ] = df['artist_hotness'].median()
https://stackoverflow.com/questions/37506488
复制相似问题