运行以下代码时:
import pandas as pd
df = pd.DataFrame({"A": [1,2,3],"B": [2,4,8]})
df2 = df[df["A"] < 3]
df2["C"] = 100
我得到以下警告:
正在尝试在DataFrame的切片副本上设置值。尝试使用. loc[row_indexer,col_indexer]=value来代替查看留档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
但这正是我想要的行为(真实的表非常大,我不想复制它),为什么我会收到警告?为什么有风险?
df
A B
0 1 2
1 2 4
2 3 8
df2
A B C
0 1 2 100
1 2 4 100
为什么会发生这种情况?
因为df2
是df
片段的副本。
为什么有风险?
这条消息告诉您,df2
和df
是不同的东西。之所以采用这种方法,是因为它们并不总是显而易见的。
以文档中的示例代码为例:
def do_something(df):
foo = df[['bar', 'baz']] # Is foo a view? A copy? Nobody knows!
# ... many lines here ...
foo['quux'] = value # We don't know whether this will modify df or not!
return foo
我如何解决它?
通过显式复制切片:
df2 = df[df['A'] < 3].copy()
df2['C'] = 100
或者使用loc
:
df.loc[df['A'] < 3, 'C'] = 100
我知道有很多关于这个警告的帖子,但是我找不到解决我的问题的办法。这是我的密码: 它产生警告: SettingWithCopyWarning:试图在数据帧切片的副本上设置值。尝试改用.loc[row\u indexer,col\u indexer]=value 即使我按照建议更改了代码,我仍然收到此警告?我所需要做的就是转换一列的数据类型。 **备注:**最初该列是具有一个十进制的浮点数类型(例如:
问题内容: Jupiter Nootbook返回此警告: 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus- copy 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#inde
我得到的错误的情况下,我不会期望他们: 和 为什么会发生在案例1和2中?
关于Spring bean配置,我有两个主要问题:1。当我从应用程序上下文检索bean时,我通过属性文件读取的属性并不持久化。2.我很难弄清楚如何将bean的值设置为另一个bean-在下面的示例中,我试图将Plan bean的度量属性设置为某个bean。 我有两个小班,一个度量,和一个更大的计划: 但是当我尝试访问这个bean时,我在主应用程序中得到了默认值或空值,这表明这些属性没有持久化:
我正在使用Ehcache 3 我有一个缓存用于存储一种类型的对象,另一个缓存用于不同类型的对象。这些在不同的类中,每个都有自己的缓存管理器。 但是我现在想知道我是否误解了这些示例,让一个CacheManager管理两个不同的缓存更有意义,或者你只是想使用同一个CacheManager来管理同一类型的多个缓存。 因为示例喜欢将代码链接在一起,所以从留档中很难看出正确的方法是什么。
我想立即使用jQuery来完成这个任务。