2015-07-08 8 views
7

Nel documento Series, il parametro use di name e fastpath non viene spiegato. Cosa fanno?Qual è il parametro name in Pandas Series?

+1

Se affettate una riga da una '' DataFrame' utilizzando df.ix [0] ', l'oggetto risultante è un' Series' con l'indice originale come 'name' attributo. 'fastpath' non ho ancora incontrato. – Finwood

+0

@Finwood Puoi fare un esempio? – Sounak

+2

Il 'nome' è un attributo della serie, diventa più importante in un df dove il' nome' è il nome della colonna. Non posso dire definitivamente cosa sia 'fastpath' ma guardando il codice sorgente è una bandiera interna per verificare se i dati sono una matrice omogenea per cortocircuitare alcuni dei componenti – EdChum

risposta

10

L'argomento name permette di dare un nome a un oggetto Series, vale a dire alla colonna. In questo modo, quando lo inserirai in un DataFrame, la colonna verrà denominata in base al parametro name.

esempio:

In [1]: s = pd.Series(["A","B","C"], name="foo") 

In [2]: s 
Out[2]: 
0 A 
1 B 
2 C 
Name: foo, dtype: object 

In [3]: pd.DataFrame(s) 
Out[4]: 
    foo 
0 A 
1 B 
2 C 

Se non si dà un name al Series sarà chiamato automaticamente. Qui sarà un 0 nell'oggetto dataframe:

0 
0 A 
1 B 
2 C 

Per il fastpath, si tratta di un parametro interno e di un problema è già stato segnalato:

https://github.com/pydata/pandas/issues/6903

2

Il name di pd.Series diventa il column name quando li si concatena insieme. Viceversa, quando si estrae una colonna da dataframe, è il column name come il nome dell'estratto pd.Series.

import pandas as pd 
import numpy as np 

s1 = pd.Series(np.random.randn(10), name='series1') 
s2 = pd.Series(np.random.randn(10), name='series2') 
pd.concat([s1, s2], axis=1) 

Out[16]: 
    series1 series2 
0 0.3499 0.3017 
1 -2.2980 -1.1121 
2 -1.4517 -0.5107 
3 -0.4596 -0.0855 
4 -0.3230 0.5391 
5 -0.1764 -0.3218 
6 2.4806 -0.6129 
7 1.6766 1.1408 
8 -1.2407 0.4857 
9 0.3587 -1.5752 
0

aggiunta a tutte le informazioni, ho appena appreso che quando devi aggiungere una riga usando la serie, ci sono due opzioni: 1) ignore_index = Vero, in questo caso, rimuoverà l'indice impostato e lo ripristinerà all'indice numerico (predefinito) 2) utilizzando il nome aiuta a mantieni la struttura attuale del dataframe e usa il parametro name come multiindex (in ordine).

0

C'è un altro uso del parametro "nome". Darò un esempio. In questo esempio vedremo che il parametro 'nome' potrebbe essere usato come nome di indice per i valori.

purchase_1 = pd.Series({'Name': 'JJ', 
         'Item': 'A', 
         'Cost': 22.00}) 
purchase_2 = pd.Series({'Name': 'KK', 
         'Item': 'B', 
         'Cost': 22.50}) 

dfn = pd.DataFrame([purchase_1, purchase_2], index=['Store X', 'Store Y']) 

dfn = dfn.append(pd.Series(data={'Cost': 30.00, 'Item': 'C','Name': 'TT'}, name='Store Y')) 
dfn 



Out[3]: 
     Cost Item Name 
Store X 22.0 A JJ 
Store Y 22.5 B KK 
Store Y 30.0 C TT 
Problemi correlati