Numpy Pandas:创建一个数据帧,其中包含n1、n2、n3等随机样本的k列

Numpy Pandas:创建一个数据帧,其中包含n1、n2、n3等随机样本的k列,numpy,pandas,Numpy,Pandas,df=数据帧(随机数(10,5)) 创建一个数据帧,该数据帧由5列组成,每列中有10个样本。如果我想要一个有5列的数据帧,但是第一列包含10个样本,第二列包含20个样本,第三列包含30个样本,等等,我该怎么办 谢谢你别想太多了:只需按照你想要的长度随机排列,并将它们连接在一起。然后排列结果 >>> counts = range(1, 6, 1) >>> df = pd.concat([pd.Series(np.random.randn(i)) for i in

df=数据帧(随机数(10,5)) 创建一个数据帧,该数据帧由5列组成,每列中有10个样本。如果我想要一个有5列的数据帧,但是第一列包含10个样本,第二列包含20个样本,第三列包含30个样本,等等,我该怎么办


谢谢你

别想太多了:只需按照你想要的长度随机排列,并将它们连接在一起。然后排列结果

>>> counts = range(1, 6, 1)
>>> df = pd.concat([pd.Series(np.random.randn(i)) for i in counts],axis=1)
>>> df.apply(np.random.permutation)
          0        1         2         3         4
0       NaN      NaN  1.354730 -0.297923  0.731383
1       NaN      NaN  0.084739       NaN -1.210666
2       NaN  1.55258 -1.016366 -0.294881  0.102921
3       NaN  0.08485       NaN  0.956638 -1.004768
4  0.612248      NaN       NaN  0.167499 -0.419745

我想,你可以用这样的方法:

>>> import random
>>> df = pd.DataFrame(np.random.randn(5,6))
>>> for i in range(len(df.columns)):
...     df.iloc[random.sample(range(5), i + 1), i] = None
... 
>>> df
           0          1          2          3         4
0  -1.527144 -0.6289867  0.7836826  0.2627288      None
1  0.0391009       None       None       None      None
2 -0.1480286  0.5671133  0.4761757       None      None
3   -1.36673       None       None       None      None
4       None   2.146048       None       None      None
5  -1.019026 -0.8022319 -0.5602172  -1.428174 -1.306279

你能举例说明你的意思吗?看起来你的桌子不是对称的。是的,没错,它不是对称的。因此,如果最后一列有50个值,那么第一列将有40个NaN,第二列将有30个NaN,等等。好吗?您不能为所有列创建30个随机数,然后将希望为空的列设置为NaN?您希望这些数字(即非NaN值)在可用的50行中随机分布吗?@DSM:Yes,RobinL:Yes,但是有没有捷径?