我知道这在 Pandas 中有效(df 是一个数据框,op 是一个列,mult 是一个浮点变量):
df.eval("op = op * @mult", inplace=True)
Run Code Online (Sandbox Code Playgroud)
但是是否可以在行的子集(就地)上执行此操作?这给了我一个错误(ex_date 是时间戳类型的局部变量,而 df 的索引是时间戳):
df.eval("df.loc[df.index < @ex_date, op] = op * @mult", inplace=True)
Run Code Online (Sandbox Code Playgroud)
错误是:语法错误: 赋值的左侧必须是单个名称
(2/19/2019):我在 numexpr 跟踪器中打开了一个报告:https : //github.com/pydata/numexpr/issues/331
熊猫报告是:https : //github.com/pandas-dev/pandas/issues/25369
除非我正在做一些我不应该做的事情,否则可空 int 的新 dtype 扩展似乎在数据帧上的 QUERY 方法中存在错误(问题似乎出在 numexpr 包中):
df_test = pd.DataFrame(data=[4,5,6], columns=["col_test"])
df_test = df_test.astype(dtype={"col_test": pd.Int32Dtype()})
df_test.query("col_test != 6")
Run Code Online (Sandbox Code Playgroud)
长错误消息的最后几行是:
文件“...\site_packages\numexpr\necompiler.py”,第 822 行,在评估 zip(names,arguments)] 文件“...\site_packages\numexpr\necompiler.py”,第 821 行,签名 = [( name, getType(arg)) for (name, arg) in File "...\site_packages\numexpr\necompiler.py", line 703, in getType raise ValueError("unknown type %s" % a.dtype.name)值错误:未知类型对象
非扩展 dtypes 工作正常:
df_test = df_test.astype(dtype={"col_test": np.int32})
df_test.query("col_test != 6")
Run Code Online (Sandbox Code Playgroud)
(ps 作为一个完全独立的问题,将 dtype 直接传递给 pd.DataFrame 构造函数是行不通的——似乎有问题)。
谢谢。
如何将最后显示的数据框保存到镶木地板中?
它是这样构造的:
df_test = pd.DataFrame(np.random.rand(6,4))
df_test.columns = pd.MultiIndex.from_arrays([('A', 'A', 'B', 'B'),
('c1', 'c2', 'c3', 'c4')], names=['lev_0', 'lev_1'])
df_test.to_parquet("c:/users/some_folder/test.parquet")
Run Code Online (Sandbox Code Playgroud)
该代码的最后一行返回:
ValueError:拼花地板必须具有字符串列名称
我是否应该假设我无法保存由(字符串的)多索引创建的列标题的数据框?谢谢。
-数据框如下所示:
lev_0 A B
lev_1 c1 c2 c3 c4
0 0.713922 0.551404 0.289861 0.178739
1 0.693925 0.425073 0.660924 0.695474
2 0.280258 0.827231 0.282844 0.523069
3 0.424731 0.380963 0.462356 0.491140
4 0.786677 0.102935 0.382453 0.199056
5 0.783115 0.295409 0.236880 0.388399
Run Code Online (Sandbox Code Playgroud) 我为Windows 64位(python 3.6 64位)安装了anaconda 4.3.然后我尝试安装argparse,但安装失败.有关该怎么办的任何建议?(即使安装有问题也比没有安装好.)谢谢.
这是错误消息(似乎建议argparse需要python 2.6 ??):
conda install argparse获取包元数据...........解决包规范:.
UnsatisfiableError:发现以下规范存在冲突: - argparse - > python 2.6* - python 3.6*使用"conda info"查看每个包的依赖关系.
conda info argparse获取包元数据...........
文件名:argparse-1.2.1-py26_0.tar.bz2名称:argparse版本:1.2.1构建字符串:py26_0内部版本号:0通道:默认大小:33 KB arch:x86_64 date:2013-02-04 license:PSF md5:7fb3d86b5777d5e0f2240f34dc335f62平台:win32 url:https://repo.continuum.io/pkgs/free/win-64/argparse-1.2.1-py26_0.tar.bz2 依赖项:python 2.6*
文件名:argparse-1.3.0-py26_0.tar.bz2名称:argparse版本:1.3.0构建字符串:py26_0内部版本号:0通道:默认大小:34 KB arch:x86_64 date:2015-01-05 license:PSF md5:6fd2e8bc96584cf9740e47d9fbcdfc79平台:win32 url:https://repo.continuum.io/pkgs/free/win-64/argparse-1.3.0-py26_0.tar.bz2 依赖项:python 2.6*