Hap*_*yPy 4 python replace pandas
鉴于此数据框架:
>>> a = pd.DataFrame(data={'words':['w1','w2','w3','w4','w5'],'value':np.random.rand(5)})
>>> a
value words
0 0.157876 w1
1 0.784586 w2
2 0.875567 w3
3 0.649377 w4
4 0.852453 w5
>>> b = pd.Series(data=['w3','w4'])
>>> b
0 w3
1 w4
Run Code Online (Sandbox Code Playgroud)
我想替换valuewith 的元素,zero但仅用于匹配中的元素b.因此,结果数据框应如下所示:
value words
0 0.157876 w1
1 0.784586 w2
2 0 w3
3 0 w4
4 0.852453 w5
Run Code Online (Sandbox Code Playgroud)
我想到了这些方面的东西:a.value[a.words==b] = 0但这显然是错的.
你很接近,只需使用pandas.Series.isin()而不是==:
>>> a.value[a['words'].isin(b)] = 0
>>> a
value words
0 0.340138 w1
1 0.533770 w2
2 0.000000 w3
3 0.000000 w4
4 0.002314 w5
Run Code Online (Sandbox Code Playgroud)
或者您可以使用ix选择器:
>>> a.ix[a['words'].isin(b), 'value'] = 0
>>> a
value words
0 0.340138 w1
1 0.533770 w2
2 0.000000 w3
3 0.000000 w4
4 0.002314 w5
Run Code Online (Sandbox Code Playgroud)
更新已可以看到文档有关betweed差异.ix和.loc,一些报价:
.loc是严格基于标签的,当找不到项目时会引发KeyError ...
.iloc是严格基于整数位置的(从轴的0到长度-1),当请求的指标超出范围时会引发IndexError ...
.ix支持基于混合整数和标签的访问.它主要基于标签,但将回退到整数位置访问..ix是最通用的,它将支持.loc和.iloc的任何输入,以及对浮点标签方案的支持..ix在处理基于混合位置和标签的层次索引时特别有用......
| 归档时间: |
|
| 查看次数: |
6103 次 |
| 最近记录: |