如何将包含字符串和NaN值的DataFrame列转换为浮点数.还有另一列,其值为字符串和浮点数; 如何将整个列转换为浮点数.
我想在Pandas中移动一列DataFrame,但是我没有找到一种方法来从文档中完成它而不重写整个DF.有谁知道怎么做?数据帧:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Run Code Online (Sandbox Code Playgroud)
期望的输出:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Run Code Online (Sandbox Code Playgroud) 我正在编写一些lambda函数,但无法解决这个问题.有没有办法lambda x: x if (x<3)在python中有类似的东西?由于lambda a,b: a if (a > b) else b工作正常.到目前为止lambda x: x < 3 and x or None似乎是我发现的最接近的.
我可以.map(func)在df中的任何列上使用,例如:
df=DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})
df['a']=df['a'].map(lambda x: x > 1)
Run Code Online (Sandbox Code Playgroud)
我还可以:
df['a'],df['b']=df['a'].map(lambda x: x > 1),df['b'].map(lambda x: x > 1)
Run Code Online (Sandbox Code Playgroud)
是否有更多的pythonic方法将函数应用于所有列或整个帧(没有循环)?
我是xpath的新手,尝试使用xpath获取"value"的值:
<input type="submit" value=" Search " class="long searchButton" style="width:190px !important;">
Run Code Online (Sandbox Code Playgroud)
虽然很容易找到元素"type="submit":
browser.find_elements_by_xpath("//*[@type='submit']")
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何获得我需要的值,如:
browser.find_elements_by_xpath("//*[@type='submit']/@value")
Run Code Online (Sandbox Code Playgroud)
有点预期会出错:
expression "//*[@type=\'submit\']/@value" is: [object Attr]. It should be an element
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
编辑:xpath是正确的,但它"返回"一个obj属性,因为它不是一个元素,所以不允许.我找不到像get_attr_by_xpath()或类似的方法.
我有使用utf-8编码的文本文件,其中包含'ö','ü'等字符.我想解析这些文件的文本形式,但我无法让tokenizer正常工作.如果我使用标准的nltk标记器:
f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = nltk.word_tokenize(items)
Run Code Online (Sandbox Code Playgroud)
输出: [u'\ufeff', u'm', u'\xfc', u'sli', u'p', u'\xf6', u'\xf6', u'k', u'r', u'\xe4', u'\xe4', u'k']
Punkt tokenizer似乎做得更好:
f = open('C:\Python26\text.txt', 'r') # text = 'müsli pöök rääk'
text = f.read()
f.close
items = text.decode('utf8')
a = PunktWordTokenizer().tokenize(items)
Run Code Online (Sandbox Code Playgroud)
输出: [u'\ufeffm\xfcsli', u'p\xf6\xf6k', u'r\xe4\xe4k']
在我无法弄清楚的第一个令牌之前仍然有'\ ufeff'(不是我不能删除它).我究竟做错了什么?非常感谢.
这可能是一个愚蠢的问题,但无论如何我都会问.我有一个生成器对象:
>>> def gen():
... for i in range(10):
... yield i
...
>>> obj=gen()
Run Code Online (Sandbox Code Playgroud)
我可以测量它的大小:
>>> obj.__sizeof__()
24
Run Code Online (Sandbox Code Playgroud)
据说发电机被消耗掉了:
>>> for i in obj:
... print i
...
0
1
2
3
4
5
6
7
8
9
>>> obj.__sizeof__()
24
Run Code Online (Sandbox Code Playgroud)
......但obj.__sizeof__()仍然是一样的.
使用字符串它按预期工作:
>>> 'longstring'.__sizeof__()
34
>>> 'str'.__sizeof__()
27
Run Code Online (Sandbox Code Playgroud)
如果有人能够启发我,我将感激不尽.
这可能只是愚蠢的,但对我来说这有点令人困惑:
In [697]: l=[]
In [698]: bool(l)
Out[698]: False
In [699]: l == True
Out[699]: False
In [700]: l == False
Out[700]: False
In [701]: False == False
Out[701]: True
Run Code Online (Sandbox Code Playgroud)
为什么l==False返回False时False == False返回True?
我有一本字典:
mydict={'öö':1,'ää':2}
Run Code Online (Sandbox Code Playgroud)
我把它写成了一个pickle文件:
a=codecs.open(r'mydict.pkl', 'wb', 'utf-8')
pickle.dump(mydict, a)
Run Code Online (Sandbox Code Playgroud)
如果我尝试加载它:
m=codecs.open(r'mydict.pkl', 'rb', 'utf-8')
mydict = pickle.load(m)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
KeyError: u"S'\\xe4\\xe4'\np1\nI2\nsS'\\xf6\\xf6'\np2\nI1\ns."
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?帮助很大程度上受到了关注.
我有一个HTML文件:
<html>
<p>somestr
<sup>1</sup>
anotherstr
</p>
</html>
Run Code Online (Sandbox Code Playgroud)
我想将文本提取为:
somestr 1个 anotherstr
但我无法弄清楚该怎么做.我写了一个to_sup()函数,将数字字符串转换为上标,所以我得到的最接近的是:
for i in doc.xpath('.//p/text()|.//sup/text()'):
if i.tag == 'sup':
print to_sup(i),
else:
print i,
Run Code Online (Sandbox Code Playgroud)
但我ElementStringResult似乎没有办法获取标签名称,所以我有点迷失.任何想法如何解决?