2017-08-23 3 views
-4

Ich habe ein 1 * 20000 Spalten Datenrahmen von booleschen Werten. Ich brauche diese booleschen Werte, um einen Datenrahmen (551 Zeilen * 20000 Spalten) auszuwählen.Pandas Spaltenauswahl mit booleschen Werten aus einem anderen Datenrahmen

[In] web.shape 
    [Out] (550, 20000) 
    [In] language.shape 
    [Out] (1, 20000) 
    [In] language 
    [Out] Index(['zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 
    ...'na', 'na', 'na', 'na', 'na', 'na', 'na', 'na', 'na', 'na'], 
     dtype='object', name='Page', length=20000) 

Nun möchte Ich mag diese Spalten von Bahn herauszunehmen wo Sprache chinesisch ist (‚zn‘) dh wo die Spaltenpositionen der Sprache sind TRUE .Ich diejenigen brauchen Spalten wie separaten Datenrahmen. Die Spaltennamen sind für Web und Sprache unterschiedlich.

Ich weiß, dass der Fehler durch die Indizes des Sprachdatenrahmens verursacht wurde. aber ich denke, dass es eine gute Lösung geben muss, um es zu vermeiden. Vielen Dank.

+0

Was haben Sie bisher versucht? –

+1

Willkommen bei Stack Overflow, bitte nehmen Sie sich etwas Zeit für die [Willkommenstour] (https://stackoverflow.com/tour), um sich hier auskennen (und auch um Ihr erstes Abzeichen zu erhalten), lesen Sie, wie Sie [erstellen ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) und prüfen Sie auch [So stellen Sie gute Fragen] (https://stackoverflow.com/help/how-to-ask) Sie erhöhen Ihre Chancen, Feedback und nützliche Antworten zu erhalten. –

+1

@greg_data hinzugefügt Beschreibung und Code. Vielen Dank –

Antwort

0

Nehmen wir ein vereinfachtes Beispiel, damit ich den Prozess hier zeigen kann.

language = pd.Index(['zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh', 'zh','zh','na', 'na', 'na', 'na', 'na', 'na', 'na', 'na', 'na', 'na'], 
    dtype='object', name='Page') 

web = pd.DataFrame(columns = range(len(language))) 

web.shape 
(0, 20) 

language.shape 
(0, 20) 

So haben beide die gleiche Anzahl von Spalten und möchten Sie web auf nur jene Spalten, in denen die entsprechenden Eintrag in language'zh' ist filtern.

Wenn ich Ihren Code ausführen:

English = web.iloc[:,language=='zh'] 

Es macht keinen Fehler zurück, gibt es das, was Sie nach. Dies lässt mich glauben, dass es einen Code gibt, den wir hier in Ihrer Beschreibung nicht sehen.

Eine andere Lösung, was man sein will:

English = web[[i for i,j in zip(web.columns, language) if j == 'zh']] 

die auch nur die Spalten in Web zurückkehren wird, wo das Äquivalent in der Sprache auf einen gewünschten Wert entspricht.

Verwandte Themen