df = DataFrame(randn(10,5)) は、各列に 10 個のサンプルがある 5 つの列で構成されるデータフレームを作成します。代わりに 5 列のデータフレームが必要で、最初の列に 10 サンプル、2 番目に 20 サンプル、3 番目に 30 などのサンプルが含まれている場合はどうすればよいでしょうか?
ありがとうございました
Don't overthink this one: just make the random series of the length you want and concatenate them together. Then permute the results.
>>> 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