我有一个DataFrame包含数字作为字符串与数千标记的逗号.我需要将它们转换为浮点数.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)
我猜我需要使用locale.atof.确实
df[0].apply(locale.atof)
Run Code Online (Sandbox Code Playgroud)
按预期工作.我得到了一系列花车.
但是当我将它应用于DataFrame时,我收到一个错误.
df.apply(locale.atof)
Run Code Online (Sandbox Code Playgroud)
TypeError :("无法将系列转换为",在索引0处发生')
和
df[0:1].apply(locale.atof)
Run Code Online (Sandbox Code Playgroud)
给出另一个错误:
ValueError :('float()的无效文字:1,200',u'occurred在索引0')
那么,我如何将这个DataFrame字符串转换为浮动的DataFrame?
使用python和marplotlib以及像seaborn这样的工具,我想创建一个像The Economist这样的图形(因为我认为风格很棒.)

这是一个时间序列图,我想要重现的关键事项是水平网格线,标签与带有刻度标记的下水平轴匹配.网格线两端的不同颜色标签将是奖励,具有相应的标题(左和右对齐).注释将是双重奖励.
我尝试使用seaborn制作类似的东西,但无法迈出第一步.
Matplotlib轴有主要和次要刻度.如何在Minor下面添加第三级刻度?
例如
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker
t = np.arange(0.0, 100.0, 0.1)
s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01)
fig, ax = plt.subplots()
plt.plot(t, s)
ax1 = ax.twiny()
ax1.plot(t, s)
ax1.xaxis.set_ticks_position('bottom')
majors = np.linspace(0, 100, 6)
minors = np.linspace(0, 100, 11)
thirds = np.linspace(0, 100, 101)
ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator(majors))
ax.xaxis.set_minor_locator(matplotlib.ticker.FixedLocator(minors))
ax1.xaxis.set_major_locator(matplotlib.ticker.FixedLocator([]))
ax1.xaxis.set_minor_locator(matplotlib.ticker.FixedLocator(thirds))
ax1.tick_params(which='minor', length=2)
ax.tick_params(which='minor', length=4)
ax.tick_params(which='major', length=6)
ax.grid(which='both',axis='x',linestyle='--')
plt.axhline(color='gray')
plt.show()
Run Code Online (Sandbox Code Playgroud)
使用孪生x轴产生我想要的效果.
有没有更好的办法?
如果x是2.3,则math.floor(x)返回2.0小于或等于的最大整数x(作为浮点数.)
如何获得严格小于(作为整数)i的最大整数?x
我想出的最好的是:
i = int(math.ceil(x)-1)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
需要注意的是,如果x是2.0那么math.floor(x)的回报2.0,但我需要的最大整数小于2.0,这是1.
我在OS X上尝试Anaconda,需要安装python包"npTDMS".
我试过了
conda install nptdms
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误
错误:当前osx-64通道中找不到匹配的包:nptdms您可以在Binstar上搜索此包
binstar搜索-t conda nptdms
所以我尝试了为linux-64找到了一个包auto/nptdms,我认为它不起作用.
并尝试过
conda skeleton pypi npTDMS
conda build npTMDS
Run Code Online (Sandbox Code Playgroud)
似乎工作(测试通过.)
但是之后
import nptmds
Run Code Online (Sandbox Code Playgroud)
回报
ImportError:没有名为nptdms的模块
所以我试过了
conda pipbuild nptdms
Run Code Online (Sandbox Code Playgroud)
一段时间后错误结束了
错误:包/名称必须小写,得到:u'npTDMS'
有人能指出我更好的指导吗?
是否可以使用带有MacOSX后端的matplotlib在屏幕上设置图形的绝对位置?
这个答案
表示可以在其他后端执行此操作,但未提及如何在MacOSX后端执行此操作。
我在OS X中运行python virtualenv.
我在virtualenv中使用pip安装了pdb.
但是当我运行pdb时,我收到以下错误.
Traceback (most recent call last):
File "/Users/myname/.virtualenvs/myenv/bin/pdb", line 9, in <module>
load_entry_point('pdb==0.1', 'console_scripts', 'pdb')()
File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/pkg_resources.py", line 2431, in load_entry_point
return ep.load()
File "/Users/myname/.virtualenvs/myenv/lib/python2.7/site-packages/pkg_resources.py", line 2147, in load
['__name__'])
ImportError: No module named pdb
Run Code Online (Sandbox Code Playgroud)