我已经从R换成了熊猫.当我做类似的事情时,我经常得到SettingWithCopyWarnings
df_a = pd.DataFrame({'col1': [1,2,3,4]})
# Filtering step, which may or may not return a view
df_b = df_a[df_a['col1'] > 1]
# Add a new column to df_b
df_b['new_col'] = 2 * df_b['col1']
# SettingWithCopyWarning!!
Run Code Online (Sandbox Code Playgroud)
我想我理解这个问题,虽然我很乐意了解我的错误.在给定的示例中,未定义是否df_b是视图df_a.因此,分配的效果df_b尚不清楚:它是否会影响df_a?通过在过滤时显式制作副本可以解决此问题:
df_a = pd.DataFrame({'col1': [1,2,3,4]})
# Filtering step, definitely a copy now
df_b = df_a[df_a['col1'] > 1].copy()
# Add a new column to df_b
df_b['new_col'] = 2 * df_b['col1']
# No Warning now
Run Code Online (Sandbox Code Playgroud)
我认为有些东西是我遗漏的:如果我们真的无法确定我们是否创建了一个视图,那么哪些观点有用呢?来自pandas文档(http://pandas-docs.github.io/pandas-docs-travis/indexing.html?highlight=view#indexing-view-versus-copy)
除了简单的情况之外,很难预测它[ …
这是我在 SO 上的第一篇文章,所以如果我做错了什么,请告诉我。
我对在 ipython 中使用不同的编程语言很感兴趣,类似于 emacs 组织模式下的 babel/literal 编程。我喜欢 emacs 组织模式的一点是,可以有多个“单元”连接到同一个 R/bash 会话。这允许我重用在文档的较早部分创建的变量/函数,即使我在两者之间做了其他事情。
我发现这在带有 Rmagic 的 ipython 中是可能的。举个例子
In [1]: %load_ext rpy2.ipython
In [2]: %%R
a <- 3
a
Out [2]: 3
In [3]: something_in_python = 'I am doing something unrelated now'
In [4]: %%R
cat('My variable a is still here, its value is: ', a) # a is still here!
Out [4]: My variable is still here, its value is: 3
Run Code Online (Sandbox Code Playgroud)
我非常希望能够在 bash 中做类似的事情。但是,无论我使用“%%script bash”还是 %%sx,变量都不是持久的。这是我想要做的:
In [1]: …Run Code Online (Sandbox Code Playgroud)