【发布时间】:2019-04-17 20:21:23
【问题描述】:
菜鸟问题。我想为 Pandas DataFrame 的已定义切片分配一个值,但我无法从警告文本中找出错误消息指向如何正确执行此操作。
错误信息: SettingWithCopyWarning: 正在尝试在 DataFrame 中的切片副本上设置值
请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
我的失败代码:
df.ix[0]["points"] = 1
df.ix[1:2]["points"] = 2
df.ix[3:8]["points"] = 3
这样做的正确方法是什么?
更新:
作为下面的@Delforge cmets,以下工作:
df.loc[0, ("points")] = 1
df.loc[1:2, ("points")] = 2
【问题讨论】:
-
您能提供示例输入和输出表吗?
-
尝试使用
pd.DataFrame.loc。示例:df.loc[1:2, ("points")] = 2 -
请注意,当您呈现与索引类型不兼容(或可转换)的切片器时,.loc 是严格的。例如在 DatetimeIndex 中使用整数。这些将引发 TypeError。 pandas.pydata.org/pandas-docs/stable/indexing.html
-
@Delforge 的回答成功了!我没有从文档中找到正确的语法。
-
@Delforge 应该被提升为答案