我有一个包含
等数据的系列0 a
1 ab
2 b
3 a
我想替换包含' b' 1,其他所有人都是0.我已经尝试了
one = labels.str.contains('b')
zero = ~labels.str.contains('b')
labels.ix[one] = 1
labels.ix[zero] = 0
这就是诀窍但却给出了这个令人讨厌的警告
正在尝试在DataFrame
的切片副本上设置值请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self._setitem_with_indexer(indexer,value)
而且我知道在我最近几次使用熊猫之前我已经看过这个。你能否给出推荐的方法?我的方法给出了理想的结果,但我该怎么办?此外,我认为Python应该是一个'如果它具有逻辑意义并且你输入它将会运行'这种语言,但我的解决方案似乎在人类可读的意义上是完全合乎逻辑的,它似乎非常非pythonic,它会引发错误。
答案 0 :(得分:0)
试试这个:
function sumRangeXorSubStr(from, to)
{
var result = 0;
for(var n=from; n<=to; n++)
result += sumXorSubStr(n);
return result;
}
答案 1 :(得分:0)
您可以使用numpy.where
。输出为numpy.ndarray
,因此您必须使用Series
构造函数:
import pandas as pd
import numpy as np
ser = pd.Series(['a','ab','b','a'])
print ser
0 a
1 ab
2 b
3 a
dtype: object
print np.where(ser.str.contains('b'),1,0)
[0 1 1 0]
print type(np.where(ser.str.contains('b'),1,0))
<type 'numpy.ndarray'>
print pd.Series(np.where(ser.str.contains('b'),1,0), index=ser.index)
0 0
1 1
2 1
3 0
dtype: int32