我正在尝试根据我的(Windows 7)目的调整某人的代码.不幸的是,他特定于UNIX.他是这样的
dir_ = pathlib.PosixPath(str(somePathVariable))
os.chdir(str(dir_))
for pth in dir_:
# some operations here
Run Code Online (Sandbox Code Playgroud)
运行这个,我得到了(并不奇怪)
NotImplementedError: cannot instantiate 'PosixPath' on your system
Run Code Online (Sandbox Code Playgroud)
我看着文档pathlib,并认为是啊,我应该能够改变PosixPath到Path,我会被罚款.好吧,然后dir_生成一个WindowsPath对象.到现在为止还挺好.但是,我明白了
TypeError: 'WindowsPath' object is not iterable
Run Code Online (Sandbox Code Playgroud)
pathlib版本是1.0,我错过了什么?目的是遍历特定目录中的文件.谷歌搜索第二个错误给出了0次点击.
备注:无法pathlib用作标签,因此我将其放入标题中.
更新
我有Python 2.7.3和pathlib 1.0
我有一个包含季度观察的 data.frame。我现在想插入每月值(首选三次,线性很好)。中间目标应该是创建一个 data.frame,DATE作为所有每月观察的索引和缺失值。
谷歌搜索表明我应该为整个时间范围创建一个空的 data.frame 然后合并它 - 但到目前为止我尝试过的一切都给了我错误。这是我的程序;但由于我是 的新手r,我愿意接受任何更改建议。
> str(ger)
'data.frame': 93 obs. of 2 variables:
$ DATE : Date, format: "1991-01-01" "1991-04-01" "1991-07-01" "1991-10-01" ...
$ VALUE: num 470780 468834 466332 472949 480359 ...
> head(ger)
DATE VALUE
1 1991-01-01 470780.3
2 1991-04-01 468834.0
3 1991-07-01 466331.6
4 1991-10-01 472949.0
5 1992-01-01 480359.2
6 1992-04-01 476744.5
emptyIndex <- seq(ger[1, 'DATE'], tail(ger[, 'DATE'], 1), by='1 month')
gerMonthly <- data.frame(DATE = emptyIndex, VALUE = NA)
merge(ger, …Run Code Online (Sandbox Code Playgroud) 我想结合几个条件来从数组中选择行/列.
鉴于矩阵A,我知道
A[:, [1,3]]
Run Code Online (Sandbox Code Playgroud)
给了我第二和第四列.也,
A[:, :3]
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.但是,我没有结合条件:
A[:, [:3, 6, 7]]
Run Code Online (Sandbox Code Playgroud)
给我一个语法错误.我怎样才能选择这个选项?
我给了一组对象,需要将它们的属性保存在数据框中.这些对象都具有相同的属性,但值不同.
我在努力
dicts = [x.__dict__ for x in objectCollection]
df = pd.concat(dicts)
Run Code Online (Sandbox Code Playgroud)
但这会给我
TypeError: cannot concatenate a non-NDFrame object
Run Code Online (Sandbox Code Playgroud)
为了复制目的,我的r对象(它包含4个词典)
In[94]: r
Out[94]:
[{'JB': 0.5261750636924186,
'JBar': 0.5261750636925998,
'U': 0.3294737627050343,
'VB': 0,
'VBar': 0,
'WB': 0.3879376586708586,
'WBar': 0.38793765867087865,
'YB': 0.48616322013005736,
'YBar': 0.4861632201302899,
'pB': 1,
'pBar': 1.0000000000002274,
'theta': 30.452217802750784,
'thetaB': 15.226108901371752,
'thetaBar': 15.226108901379034,
'u': 0.027673559739652746,
'vB': 0.4213606342845696,
'vBar': 0.4213606342847711,
'wB': 0.40542217802756686,
'wBar': 0.4054221780275895},
{'JB': 0.591730026927601,
'JBar': 0.5888459364503311,
'U': 0.3574380470030322,
'VB': 0,
'VBar': 0,
'WB': 0.4133529860815169,
'WBar': 0.42286537327529117,
'YB': 0.4450754942945968,
'YBar': …Run Code Online (Sandbox Code Playgroud) 说我有两个对象X,Y形状k,1,n和k,m,n.我知道X当我进行诸如此类的操作时,numpy会自动沿第一维扩展/重复X + Y.这种魔法是否适用于numpy支持/包含的所有数学运算?
例如,我可以做到scipy.special.binom(X,Y)并获得预期的结果吗?我尝试了一些特殊功能,但没有收到错误.没有收到错误让我得出结论广播是否正确完成?
使用嵌套在其他pandas.DataFrame.plot()和GridSpec子情节设置中的复杂脚本,我遇到以下问题:
当我创建一个 2-cols 1-row gridspec 时,刻度标签都是正确的。然而,当我创建一个 1-col 2-rows gridspec 时,只要我使用 绘制到第一(上行)轴上pandas.DataFrame.plot(),顶行的 x-ticklabels 就会消失(刻度线仍然存在)。
一旦我在下斧头上画了一些东西,顶部刻度就不会改变,这sharex似乎不是问题。
但是,我的 x 标签仍然存储:
axes[0].get_xaxis().get_ticklabels()
Out[59]:
<a list of 9 Text major ticklabel objects>
Run Code Online (Sandbox Code Playgroud)
只是它们没有显示出来。我怀疑是 NullFormatter,但事实并非如此:
axes[0].get_xaxis().get_major_formatter()
Out[57]:
<matplotlib.ticker.ScalarFormatter at 0x7f7414330710>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我在第一个轴的顶部得到了刻度和标签
axes[0].get_xaxis().tick_top()
Run Code Online (Sandbox Code Playgroud)
但是,当我再回到 时tick_bottom(),我只有底部有刻度,没有标签。
尽管使用“正常”格式化程序,但什么会导致我存储的标签不显示?
这是一个简单的例子:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec
df = pd.DataFrame(np.random.rand(100,2), columns=['A', 'B'])
figure = plt.figure()
GridSpec = gridspec.GridSpec(nrows=2, ncols=1)
[plt.subplot(gsSpec) for …Run Code Online (Sandbox Code Playgroud) 我有一个配色方案来自
plt.style.use('ggplot')
Run Code Online (Sandbox Code Playgroud)
所以我不想手动选择颜色,或者从颜色循环器中选择它们。但是,当我有一个辅助轴时:
fig, ax = plt.subplots()
ax2 = ax.twinx()
ax.plot(np.array([1, 2]))
ax2.plot(np.array([3, 4]))
Run Code Online (Sandbox Code Playgroud)
它将以相同的颜色绘制两条线。我如何判断ax2该图上已经n=1绘制了线条,以便它以第n+1th 种颜色开头?
有好几次,我处理过ND数组,比如
foo = np.arange(27).reshape((3,3, 3))
Run Code Online (Sandbox Code Playgroud)
然后我会有一个维度,我想在下一个操作中保留变量。假设下一个操作是mean,在这种情况下
preserveAxis = 1
desiredOutcome = foo.mean(axis=0).mean(axis=1)
Run Code Online (Sandbox Code Playgroud)
前一个是我想要的结果,因为我首先在第 0 个轴上取平均值,然后在第 2 个轴上取平均值(在初始操作后已成为第一个轴)。也就是说,我已经在轴 0 和 2 上完成了操作,但保留了轴 1。
这种类型的程序很麻烦,而且最重要的是不通用。我正在寻找一种通用方法来保留一个轴,但对所有其他轴进行求和/平均值。我怎样才能最好地实现这一目标,最好是在 以内numpy?
我想构建一个Pandas Dataframe,所有行应该等于df2的列名:
df1 = pd.Dataframe( ???, index=df2.index, columns=df2.columns)
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它不起作用:
df1 = pd.Dataframe( np.repeat(df2.columns, df2.shape[0]) , index=df2.index, columns=df2.columns)
Run Code Online (Sandbox Code Playgroud) 让我们看W一些维度矩阵(x, nP)[见问题末尾]
现在,我正在做以下代码:
uUpperDraw = np.zeros(W.shape)
for p in np.arange(0, nP):
uUpperDraw[s, p] = (W[s+1,:(p+1)]).sum()
Run Code Online (Sandbox Code Playgroud)
我想将其矢量化以提高效率.鉴于a pGrid = [0, 1, ...],我如何重现以下内容?
uUpperDraw = np.array([sum(W[x, 0]), sum(W[x,0] + W[x, 1]), sum(W[x,0] + W[x, 1] + W[x, 2]) ...
Run Code Online (Sandbox Code Playgroud)
这是一个可重复的例子.
>>> s, nP
(3, 10)
>>> W
array([[ 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , …Run Code Online (Sandbox Code Playgroud)