2016-05-02 18 views
-1

Ich habe eine Tabelle:ersten n Spalten Datenrahmen

simple_table

Und ich möchte die ersten drei Spalten schneiden, wie kann ich das tun?

Ich habe mir diesen anderen Beitrag angesehen: Finding top N columns for each row in data frame, aber das ist für mich übertrieben.

Ich habe versucht:

df1 = df.iloc[:,0:3] 

Aber das gibt den Fehler: IndexingError: Zu viele Indexer

EDIT:

Detailliertere Code mit dem zusätzlichen ix

cols = [col for col in df.columns if col != 'stream'] 
    candidates = df.loc[url,cols] 

    dfSorted = candidates.sort_values(ascending=False) 

    big_three = dfSorted.ix[:,0:3] 
+1

Was ist Ihre Pandas Version? Ich denke, Spalten mit .iloc wurde später eingeführt. Es funktioniert gut auf v18.0. .ix kann an früheren Versionen arbeiten, wenn ich mich richtig erinnere. – ayhan

+0

@ayhan Ich habe Version 0.17.1 – Stanko

+1

@Stanko - was ist 'print df.index' und' print df.columns'? – jezrael

Antwort

1

Ich glaube, Sie apply mit nlargest für die Auswahl oben 3 Spalten und Werte von DataFramecandidates verwenden können:

import pandas as pd 

df = pd.DataFrame({'A': {'a': 1, 'c': 5, 'b': 2, 'd': 3}, 
        'C': {'a': 8, 'c': 7, 'b': 8, 'd': 7}, 
        'B': {'a': 4, 'c': 1, 'b': 5, 'd': 4}, 
        'D': {'a': 5, 'c': 3, 'b': 9, 'd': 1}, 
        'stream': {'a': 1, 'c': 2, 'b': 2, 'd': 3}}) 
print df 
    A B C D stream 
a 1 4 8 5  1 
b 2 5 8 9  2 
c 5 1 7 3  2 
d 3 4 7 1  3 


cols = [col for col in df.columns if col != 'stream'] 
candidates = df.ix['a':'c', cols] 

print candidates 
    A B C D 
a 1 4 8 5 
b 2 5 8 9 
c 5 1 7 3 

print candidates.apply(lambda x: zip(x.nlargest(3).index, x.nlargest(3).values), axis=1) 
a [(C, 8), (D, 5), (B, 4)] 
b [(D, 9), (C, 8), (B, 5)] 
c [(C, 7), (A, 5), (D, 3)] 
dtype: object 

Was ist das gleiche wie:

def f(x): 
    #print x.nlargest(3) 
    #print zip(x.nlargest(3).index, x.nlargest(3).values) 
    return zip(x.nlargest(3).index, x.nlargest(3).values) 

print candidates.apply(f, axis=1) 
a [(C, 8), (D, 5), (B, 4)] 
b [(D, 9), (C, 8), (B, 5)] 
c [(C, 7), (A, 5), (D, 3)] 
dtype: object 
Verwandte Themen