【问题标题】:Pandas accidentally setting entire column, not last in row熊猫不小心设置了整列,而不是最后一行
【发布时间】:2018-02-07 23:15:02
【问题描述】:

这可能是一个愚蠢的问题,但我有点坚持。假设我有这个数据框:

   amount  amount_str  buy_order_id        id   midprice       price  
0  0.01545000  0.01545000     915692220  53424450  0.1286495  0.12947460   
0  1.65956203  1.65956203     915692330  53424458        NaN  0.12947460   
0  0.68427900  0.68427900     915692581  53424487        NaN  0.12947460   
0  0.22306417  0.22306417     915692632  53424491        NaN  0.12808629   
0  0.22306396  0.22306396     915692964  53424530        NaN  0.12808646   
0  2.31474046  2.31474046     915693081  53424535        NaN  0.12947460   
0  0.16808924  0.16808924     915694097  53424600        NaN  0.12808675   
0  5.30166589  5.30166589     915694819  53424629        NaN  0.12808710   
price_str  sell_order_id   timestamp  type  
0  0.12947460      915690988  1518045004     0  
0  0.12947460      915690988  1518045006     0  
0  0.12947460      915690988  1518045010     0  
0  0.12808629      915692647  1518045010     1  
0  0.12808646      915693012  1518045016     1  
0  0.12947460      915690988  1518045017     0  
0  0.12808675      915694117  1518045031     1  
0  0.12808710      915694862  1518045041     1

这是我的问题:每次程序从 bitstamp 获得新订单时,它会将值附加到此数据帧,然后添加当前的中间价。

我通常可以用df['midprice'] = value 做到这一点;但是,这会将其设置为整个列,而不仅仅是该条目。

我将如何使它按行而不是整列添加?

谢谢!

【问题讨论】:

  • “我通常可以使用df['midprice'] = value 来做到这一点”这不应该作为附加到数据帧的方法。

标签: python pandas


【解决方案1】:

Pandas 擅长矢量化计算。

所以df['midprice'] = value 将整个系列(或列)设置为固定值。

您似乎只想修改 last midprice 值,直接在另一个进程添加一行之后。这是实现此目的的一种方法:

df.iloc[-1, df.columns.get_loc('midprice')] = value

【讨论】:

  • 这样的东西正是我想要的,让我看看这是否有效。我知道这与 iloc、loc 或 iat、at 之一有关。
  • 这是内联吗?
  • @xxen0nxx,不知道你说的内联是什么意思
  • 嗯,我遇到了一个错误。 AttributeError:“系列”对象没有属性“列”
  • 约定是df 指的是数据框。尝试使用正确的变量。
猜你喜欢
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 2023-02-26
  • 2023-03-31
  • 1970-01-01
  • 2017-12-16
  • 2021-03-28
相关资源
最近更新 更多