对于python dict
,我可以使用iteritems()
同时循环键和值.但我找不到NumPy阵列的这种功能.我必须idx
像这样手动跟踪:
idx = 0
for j in theta:
some_function(idx,j,theta)
idx += 1
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我在我的Python IDE中使用PyCharm(社区版).我希望程序以逐行方式进行调试.所以我不想把每一行都设置为断点......有没有办法可以做到这一点?
我知道,对于熊猫来说,通过这样做
test_df.ewm(halflife=half_life_for_mean).mean()
Run Code Online (Sandbox Code Playgroud)
我可以随时得到指数移动平均线......
然而我实际上只对最后一个感兴趣,我怀疑通过计算所有它可能有点低效。换句话说,我所需要的只是
test_df.ewm(halflife=half_life_for_mean).mean().iloc[-1]
Run Code Online (Sandbox Code Playgroud)
然而...我想知道这是否效率太低,它本质上需要从开始到构造进行计算ewm().mean()
。
是否有其他方法可以让我仅获取最后一个元素,而无需花费时间来计算整个时间依赖ewm.mean()
。
我有一个python pandas数据帧的字典.这本词典的总大小约为2GB.但是,当我在16个多处理中共享它时(在子进程中我只读取dict的数据而不修改它),它需要32GB ram.所以我想问一下,如果我可以在不进行复制的情况下跨多处理共享这个字典.我试图将它转换为manager.dict().但似乎需要太长时间.实现这一目标的最标准方法是什么?谢谢.
假设我想使用 jupiter notebook/ipython 作为开发环境,然后将所有内容复制到 python 脚本中。在 ipython 中我们有这样的命令
In [1]: cd ..
/Users/myname/Desktop/software
In [2]: ls
blah_blah_blah/
Run Code Online (Sandbox Code Playgroud)
假设我完成了 ipython 笔记本并想要复制所有内容(假设我有 1000 行并且我无法将它们一一编辑)来创建我的 python 脚本。是否可以让我的 python 脚本理解“cd ..”等行?
在Linux中,这个shell脚本可以工作:
# Temporary directory for me to work in
myTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"
# Change to temporary directory
cd "${myTEMP_DIR}"
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的Mac上执行此操作时,我收到以下错误:
dhcp-18-189-66-216:shell-scripting-sci-day2 myname$ myTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"
dhcp-18-189-66-216:shell-scripting-sci-day2 myname$ cd "${myTEMP_DIR}"
-bash: cd: /var/folders/d8/b8d1j9x94l9fr3y21xrnc0640000gn/T/-d.QZDPA9Da
zombie.nwlEnHGDb: No such file or directory
Run Code Online (Sandbox Code Playgroud)
谁知道什么是错的?谢谢.
我有一个非常简单的任务。本质上,我想创建一个熊猫系列并使用元组值作为索引。例如,
series_tmp = pd.Series()
series_tmp[(0,'a')] = 1
Run Code Online (Sandbox Code Playgroud)
我想要做的是,我想在 pd.Series 中再创建一行,其索引为 (0,'a'),值为 1。
上面的代码得到错误:
KeyError: '[0 1] not in index'
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
我知道多索引,但它对我的情况无济于事。因为我需要像 ('a',(2,'c'),'d') 这样非常复杂的元组作为键。
结论:感谢所有精彩的答案!要添加以元组为索引的行,我们应该这样做:
series_tmp = series_tmp.append(pd.Series([1],index=[(0,'a')]))
Run Code Online (Sandbox Code Playgroud) 我想做的应该是非常简单的.基本上,我有一些数据帧,我需要为某些列分配一些元组值.
例如:
pd_tmp = pd.DataFrame(np.random.rand(3,3))
pd_tmp["new_column"] = ("a",2)
Run Code Online (Sandbox Code Playgroud)
我只需要一个带有元组值的新列,我该怎么办?
ValueError: Length of values does not match length of index
Run Code Online (Sandbox Code Playgroud)
前面的代码得到错误.
我已经使用del list_of_df
. 但是我们意识到内容仍然占用内存。所以我们尝试了%reset list_of_df
,但是之前的变量名已经不存在了......除了重新启动内核以重新收集内存之外我们无能为力吗?谢谢
进一步:更一般地说,我可能已经忘记了从巨大的木星笔记本代码中删除的内容。是否可以检查删除了哪些内容但仍然占用内存并删除它?
出于某种原因,我需要以这种格式输出到 csv 并在每列名称周围加上引号,我想要的输出如下所示:
"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
我正在尝试
import csv
import pandas as pd
Y_pred.index.name = "\"date\""
Y_pred.name = "\'ret\'"
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
os.makedirs(path)
except:
pass
Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ')
Run Code Online (Sandbox Code Playgroud)
并得到如下输出:
"""date""" 'ret'
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到一种使用引号将列换行的方法。有谁知道怎么做?谢谢。
我的解决方案: 使用 quoting=csv.QUOTE_NONE 和 Y_pred.index.name = "\"date\"", Y_pred.name = "\"ret\""
Y_pred.index.name = "\"date\""
Y_pred.name = "\"ret\""
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
os.makedirs(path)
except:
pass
Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ',quoting=csv.QUOTE_NONE)
Run Code Online (Sandbox Code Playgroud)
然后我得到
"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)