我一直在广泛搜索,但无法解决这个问题:
我在 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)
要求
所以我的输出将如下所示:
date ticker Name NoShares SharePrice Volume …Run Code Online (Sandbox Code Playgroud) 我想用以下列表中的值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而不是循环来做到这一点?循环需要很长时间(列表非常大).