我需要一次增加一行python DataFrame。
在R中,sapply()
函数是快速有效的。例如,
sapply(1:100, function(i) rnorm(50) )
生成一个50 x 100的(标准正态随机)数矩阵,然后可以根据需要将其转置和/或转换为数据帧
如何在python中高效地做同样的事情呢?
发布于 2019-02-25 23:30:12
R中的sapply
等同于python中的map
。
R中的sapply(c(-1, 1), abs)
等同于Python中的map(abs, (-1, 1))
。但是map
会返回一个地图对象,所以如果你想要一个列表,你需要把它传递给list()
。在Python语言中,您还可以使用列表理解[abs(i) for i in (-1, 1)]
。
您的示例不是sapply
的好用例。这个矩阵可以在不使用的情况下实现:matrix(rnorm(5000), 50, 100)
。同样,在Python语言中,使用import numpy as np
可以使用np.random.normal(size=(50, 100))
来实现。
发布于 2016-04-03 03:51:53
考虑下面的列表理解版本:
import numpy as np
import pandas as pd
df = pd.DataFrame([np.random.randn(50) for i in range(100)])
发布于 2018-07-03 04:57:45
虽然列表理解是sapply()
的更通用的替代方案,但对于所述问题,最有效的方法是省略列表理解:
import numpy as np
import pandas as pd
# randn takes dimensions for args: randn(d1, d2, ..., dn)
df = pd.DataFrame(np.random.randn(50,100))
https://stackoverflow.com/questions/36377553
复制相似问题