Python:SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值

Python:SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值,第1张

概述我的熊猫数据帧: dframe = pd.DataFrame({"A":list("abcde"), "B":list("aabbc"), "C":[1,2,3,4,5]}, index=[10,11,12,13,14]) A B C10 a a 111 b a 212 c b 313 d b 414 e c 5 我想 我的熊猫数据帧:

dframe = pd.DataFrame({"A":List("abcde"),"B":List("aabbc"),"C":[1,2,3,4,5]},index=[10,11,12,13,14])    A   B   C10  a   a   111  b   a   212  c   b   313  d   b   414  e   c   5

我想要的输出:

A   B   C   a   b   c10  a   a   1   1   None    None11  b   a   2   2   None    None12  c   b   3   None    3   None13  d   b   4   None    4   None14  e   c   5   None    None    5

想法是根据“B”列中的值创建新列,复制“C”列中的相应值并将其粘贴到新创建的列中.
这是我的代码:

lis = sorted(List(dframe.B.unique()))#creating empty columnsfor items in lis:   dframe[items] = None #here copy and pasting    for items in range(0,len(dframe)):        slot = dframe.B.iloc[items]        dframe[slot][items] = dframe.C.iloc[items]

我最终得到了这个错误:

SettingWithcopyWarning: A value is trying to be set on a copy of a slice from a DataFrameSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.HTML#indexing-vIEw-versus-copy  app.launch_new_instance()

此代码在Python 2.7中运行良好,但在3.x中运行不佳.我哪里错了?

解决方法 从…开始

to_be_appended = pd.get_dummIEs(dframe.B).replace(0,np.nan).mul(dframe.C,axis=0)

然后结束

dframe = pd.concat([dframe,to_be_appended],axis=1)

好像:

print dframe    A  B  C    a    b    c10  a  a  1  1.0  NaN  NaN11  b  a  2  2.0  NaN  NaN12  c  b  3  NaN  3.0  NaN13  d  b  4  NaN  4.0  NaN14  e  c  5  NaN  NaN  5.0

搜索注意事项.

这是将一个热编码与广播乘法相结合.

总结

以上是内存溢出为你收集整理的Python:SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值全部内容,希望文章能够帮你解决Python:SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存