2016-12-03 6 views
1
abgereichertem
import numpy as np 
from numpy import random 
import pandas as pd 
from pandas import Series, DataFrame 

staff = ['Emelia','Raphael','Mike', 'Peter'] 

staff_l = [] 
for i in random.choice(staff, 4): 
    staff_l.append(i) 
s = Series(staff_l,index=['A','B','C','D']) 

dframe = DataFrame(index=['A','B','C','D','E','F'],columns=['Morning','Afternoon']) 

dframe.fillna(s) 

Ich möchte die ‚Morgen‘ füllen können Spalte mit einer zufälligen Auswahl der Namen der Mitarbeiter, bis die Säulenenden und füllen auch den Nachmittag Spalte. Da ich keine Liste verwenden kann, habe ich sie in eine Serie umgewandelt und funktioniert immer noch nicht. Wenn ich diesen Code dframe.fillna (s) verwende, gibt es mir eine NaN-Spalte. Ich kann nicht scheinen, das NaN zu ersetzen.Autofill Spalte eines Datenrahmens mit zufälligen Zeichenfolgen, bis die Säule

Antwort

0

fillna gibt einen anderen Datenrahmen zurück. Es ändert nicht wirklich dframe, wenn Sie das Argument inplace hinzufügen.

dframe.fillna(s, inplace=True) 

Oder alternativ können Sie dframe

dframe = dframe.fillna(s) 

zuweisen Unabhängig davon, ob Sie inplace verwenden möchten ist bis zu Ihnen, aber hier ist eine anständige Diskussion über die Vor-/Nachteile davon mit: guidelines on using pandas inplace keyword argument

1

Ich denke, Sie müssen zumindest über die Größe des Datenrahmens klar sein.

In Ihrem Fall

diese funktioniert

import pandas as pd 
import random 
staff = ['Emelia','Raphael','Mike', 'Peter'] 
yourframe=pd.Dataframe(index=['A','B','C','D','E','F'],columns=['Morning','Afternoon']) 
for x in yourframe.index.values: 
    yourframe.set_value(x,'Morning',random.choice(staff)) 

for x in yourframe.index.values: 
    yourframe.set_value(x,'Afternoon',random.choice(staff)) 

Sie können sie in der gleichen Schleife setzen, da random.choice zufällige Werte zurückgibt, aber ich bin nicht sicher, was Sie wollten.

Verwandte Themen