2016-04-21 11 views
-2

Morgen,welche Nummer Zeile bedeutet ‚x‘ erscheint auf

Ich habe eine Pandas Datenrahmen:

df 

    Code 
0 F5031032 
1 F5546810 
2 F117225534 
3 F17770 
4 F29157 

Ich möchte in der Lage sein, um herauszufinden, welche Zeile zwei der Codes sitzt. So ist die Antwort ich suche wäre:

Code  Row 
F5031032 1 
F17770  4 

dank

+0

Ich denke, ich bin etwas fehlt, aber es ist nur 'df [ 'Row'] = df.index + 1 '? – Zero

Antwort

1

Versuchen Sie, diese

codes = ["F5031032", "F5546810", "F117225534", "F17770", "F29157"] 
df = pd.DataFrame(data=codes, columns=['Code']) 
df['Row'] = df.index+1 
print df 
0

IIUC Sie isin für ausgewählte Werte verwenden können, dann Index idx erhalten und wenn der Index nicht von 0 starten, verwenden get_indexer:

print df 
     Code 
2 F5031032 
3 F5546810 
4 F117225534 
5  F17770 
6  F29157 

print df['Code'].isin(['F5031032','F17770']) 
2  True 
3 False 
4 False 
5  True 
6 False 
Name: Code, dtype: bool 

idx = df[df['Code'].isin(['F5031032','F17770'])].index 
print idx 
Int64Index([2, 5], dtype='int64') 

print df.index.get_indexer(idx) 
[0 3] 

df1 = df[df['Code'].isin(['F5031032','F17770'])].copy() 
df1['Row'] = df.index.get_indexer(idx) + 1 
print df1 
     Code Row 
2 F5031032 1 
5 F17770 4 
0

Nicht sicher, ob Sie sich für so etwas wie diese

In [10]: df_filter = df[df['Code'].isin(['F5031032', 'F17770'])] 

In [11]: df_filter['Row'] = df_filter.index + 1 


In [12]: df_filter 
Out[12]: 
     Code Row 
0 F5031032 1 
3 F17770 4