2015-11-20 15 views
7

Próbuję utworzyć serię pandas.pandy tworzą serię z n elementami (sekwencyjną lub randbetową)

Jedna kolumna serii powinna zawierać n kolejnych numerów. [1, 2, 3, ..., n]

Jedna kolumna powinna zawierać liczby losowe między k i k+100.

Jedna kolumna powinna zawierać losowy wybór między ciągami na liście. ['A', 'B', 'C', ... 'Z']

+2

Proszę pokazać swoje wysiłki, SO nie jest usługą pisanie kodu – EdChum

+0

ten należy podzielić na wiele pytań. –

+0

Również kolumna jest serią, brzmi jak chcesz 'DataFrame' z trzema' Series'. –

Odpowiedz

7

Nie może być wiele rozwiązań. W komentarzach bloku kodu (#) znajdziesz kilka linków, aby uzyskać więcej informacji:

import pandas as pd 
import numpy as np 
import random 
import string 

k = 5 
N = 10 

#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html 
#http://stackoverflow.com/a/2257449/2901002 

df = pd.DataFrame({ 'A' : range(1, N + 1 ,1), 
    'B' : np.random.randint(k, k + 100 , size=N), 
    'C' : pd.Series(random.choice(string.ascii_uppercase) for _ in range(N)) }) 

print df 
# A B C 
#0 1 60 O 
#1 2 94 L 
#2 3 10 W 
#3 4 94 X 
#4 5 60 O 
#5 6 20 K 
#6 7 58 Y 
#7 8 40 I 
#8 9 49 X 
#9 10 65 S 

Numpy rozwiązanie:

import pandas as pd 
import numpy as np 

k = 5 
N = 10 

alphabet = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ') 

#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html 

df = pd.DataFrame({ 'A' : range(1, N + 1 ,1), 
    'B' : np.random.randint(k, k + 100 , size=N), 
    'C' : np.random.choice(np.array(alphabet, dtype="|S1"), N) }) 

print df 
# A B C 
#0 1 16 U 
#1 2 76 X 
#2 3 101 N 
#3 4 61 F 
#4 5 52 J 
#5 6 62 A 
#6 7 99 L 
#7 8 23 N 
#8 9 75 D 
#9 10 16 Q 
3
import pandas 
n = 30 
k = 40 
pandas.DataFrame([(i, random.randint(k, k+100), chr(random.randint(ord('A'), ord('Z')))) for i in xrange(0, n) 

Jeśli chcesz podać nazwy kolumn, w przeciwnym razie jest ona ustawiona na 0,1,2

Powiązane problemy