跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求教一个 pandas 赋值失败的问题, pandas 赋值机制到底是怎么回事…
未分類
2 9 月 2020

求教一个 pandas 赋值失败的问题, pandas 赋值机制到底是怎么回事…

求教一个 pandas 赋值失败的问题, pandas 赋值机制到底是怎么回事…

資深大佬 : yellowtail 16

df.iloc[1,0] =1 可以成功赋值,但是类似的写法,df.iloc[1].a = 1 就失败了

还有程序需要累加行实现一个 df 堆砌 之前用的 append 花了 36 秒,后来改为了 loc[i]直接写入,优化一点细节..可是还要 31 秒

求点拨…求推荐学习材料

大佬有話說 (9)

  • 資深大佬 : dongxiao

    试试 df.loc[1,”a”]=1

  • 資深大佬 : imn1

    不要在循环里面逐条 append
    循环生成 dict 或其他,循环后转为 df,然后一次 append/contact

  • 主 資深大佬 : yellowtail

    @dongxiao 想知道两种写法究竟有什么区别 为什么会失败 。。。

  • 主 資深大佬 : yellowtail

    @imn1 感谢回复,但是不能这么写,因为增加新的行的同时需要从旧的 df 里读取和修改数据

  • 資深大佬 : imn1

    1. .a 是只读的,[“a”]是可写的
    2. 转一下弯,df 每行或者每列只是个列表,循环读取一点不影响,关键是逐条 append 太慢

  • 資深大佬 : dongxiao

    @yellowtail 区别很大,.loc 相当于按键值取,你即使对 dataframe 重排,.loc 取得的值仍是不变的,.iloc 则是按位置,顺序变了取的值也就变了。看了下描述,你的需求可以用 dataframe 的 apply 实现或者 series 的 map 实现,用的广播方式,并行计算,如果用循环那可就太慢了

  • 資深大佬 : volvo007

    df 堆彻 我没太看明白
    不是有一个 pd.concat 方法可以直接拼接吗?
    这个方法可以接受一个数组参数,所以可以一次性拼接多个 df
    但我觉得 LZ 应该知道这个函数,所以我觉得是我没理解 LZ 要实现的东西?

  • 主 資深大佬 : yellowtail

    @imn1 意思是循环增加一行的时候,需要根据条件修改上一行的既有内容,如果每次增加一个 df 再 concat,那得在很多个 df 找到对应的修改以后再 concat 那就麻烦了 append 可能避不开了

  • 資深大佬 : imn1

    @yellowtail #8
    大致明白了
    但我的建议是,把不需要改动的东西先算出来,先组好新的 df
    然后用移动函数,再整体更改一列或者列里面的一段,这样会快很多

    查查 pandas 手册,移动函数是 df 专门用于有序 index,可以批量更改多行数据的函数,例如证券的移动平均
    搜 pandas.core.window 或 pandas.dataframe.rolling

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具