小编ash*_*her的帖子

按组减少 panda 数据框

我一直在广泛搜索,但无法解决这个问题:

我在 pandas 中有一个数据框,如下所示:

date    ticker Name NoShares SharePrice Volume Relation
2/1/10  aaa    zzz  1        1          1      d 
2/1/10  aaa    yyy  1        2          5      o
2/1/10  aaa    zzz  2        5          2      d  
2/5/10  bbb    xxx  5        5          1      do
2/5/10  ccc    www  5        5          1      d
2/5/10  ccc    www  5        5          1      d
2/5/10  ddd    vvv  5        5          1      o
2/6/10  aaa    zzz  1        1          3      d
Run Code Online (Sandbox Code Playgroud)

要求

  1. 我想按日期和名称分组,并且:
  2. 股数合计
  3. 有一个股价加权平均列(权重是无股)
  4. 平均体积并将其作为一列
  5. 保持关系不变

所以我的输出将如下所示:

date    ticker Name NoShares SharePrice Volume …
Run Code Online (Sandbox Code Playgroud)

python group-by pandas

3
推荐指数
1
解决办法
2万
查看次数

用lapply替换所有空列表

我想用以下列表中的值0替换所有空列表(数字(0)):

a <- list(numeric(0), 3.13887804749505, c(0.745977548064631, 15.7233179232099, 
4.32068483740438, 19.6680377065919, 9.24007013740377), numeric(0), 
    c(28.8670111833615, 1.27199935252619, 26.6173612819351, 46.8824614685704
    ), c(3.03425142063166, 3.08366863855608, 4.37959434697201, 
    4.00518501422067, 2.05826729526789, 2.29413068424335))
Run Code Online (Sandbox Code Playgroud)

我在尝试这个:

b <- lapply(a, function(x) ifelse(length(x)==0,0,x))
Run Code Online (Sandbox Code Playgroud)

但我从每个列表中得到第一个数字:

list(0, 3.13887804749505, 0.745977548064631, 0, 28.8670111833615, 
    3.03425142063166)
Run Code Online (Sandbox Code Playgroud)

有没有办法用apply而不是循环来做到这一点?循环需要很长时间(列表非常大).

r lapply

1
推荐指数
1
解决办法
131
查看次数

标签 统计

group-by ×1

lapply ×1

pandas ×1

python ×1

r ×1