Sol*_*dor 0 python random numpy pandas
我有1到80个数字的DataFrame如何随机获取20个元素并将结果保存到另一个DataFrame?我不能像行一样保存每个列表.它的保存元素就像一个列.在未来,我想尝试使用sklearn预测每个radom元素
a = np.arange(1,81).reshape(8,10)
pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)
我必须得到20个唯一的数字并将其写成一行.例如在python中:
from random import sample
for x in range(1,20):
i=sample(range(1,81), k=20)
i.sort()
print(x,'-',i)`
Run Code Online (Sandbox Code Playgroud)
它返回列表[1,3,5,8,34,45,12,76,45 ...] 20个元素,我希望它看起来像:
0 1 2 3 4 5 6 7 8 9 10 11 12 ... 20
0 1 5 10 14 20 55 67 34 ...... 20 elements
1
.
.
Run Code Online (Sandbox Code Playgroud)
使用df.sample()来获得数据的样本FRM的一个数据帧:
a = np.arange(1,81).reshape(8,10)
df = pd.DataFrame(a)
df1= df.sample(frac=.25)
>>df1
0 1 2 3 4 5 6 7 8 9
5 51 52 53 54 55 56 57 58 59 60
3 31 32 33 34 35 36 37 38 39 40
Run Code Online (Sandbox Code Playgroud)
对于随机排列np.random.permutation():
df.iloc[np.random.permutation(len(df))].head(2)
0 1 2 3 4 5 6 7 8 9
6 61 62 63 64 65 66 67 68 69 70
1 11 12 13 14 15 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)
编辑:要在列表中获取20个元素,请使用:
import itertools
list(itertools.chain.from_iterable(df.sample(frac=.25).values))
#[71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
frac=.2525%数据的均值,因为您使用了80元素25%为您提供20元素,您可以根据您拥有的多个元素以及您想要的数量来调整分数.
编辑1:进一步编辑问题:print(df.values)给你一个数组:
[[ 1 2 3 4 5 6 7 8 9 10]
[11 12 13 14 15 16 17 18 19 20]
[21 22 23 24 25 26 27 28 29 30]
[31 32 33 34 35 36 37 38 39 40]
[41 42 43 44 45 46 47 48 49 50]
[51 52 53 54 55 56 57 58 59 60]
[61 62 63 64 65 66 67 68 69 70]
[71 72 73 74 75 76 77 78 79 80]]
Run Code Online (Sandbox Code Playgroud)
你需要np.random.shuffle在这种情况下使用shuffle这个数组,df.T.values因为你也想要对列进行洗牌:
np.random.shuffle(df.T.values)
Run Code Online (Sandbox Code Playgroud)
然后做一个重塑:
df1 = pd.DataFrame(np.reshape(df.values,(4,20)))
>>df1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 4 3 10 2 8 7 1 5 6 9 14 13 20 12 18 17 11 15 16 19
1 24 23 30 22 28 27 21 25 26 29 34 33 40 32 38 37 31 35 36 39
2 44 43 50 42 48 47 41 45 46 49 54 53 60 52 58 57 51 55 56 59
3 64 63 70 62 68 67 61 65 66 69 74 73 80 72 78 77 71 75 76 79
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |