2015-07-24 7 views
20

In questions e answers, gli utenti molto spesso inviano un esempio DataFrame che la loro domanda/risposta funziona con:Come copiare dataframe/incolla da StackOverflow in Python

In []: x 
Out[]: 
    bar foo 
0 4 1 
1 5 2 
2 6 3 

Sarebbe davvero utile per essere in grado di ottenere questo DataFrame nel mio interprete Python in modo da poter iniziare il debug della domanda, o testare la risposta.

Come posso fare questo?

risposta

23

I panda sono scritti da persone che sanno davvero cosa vogliono fare le persone.

Since version 0.13 c'è una funzione pd.read_clipboard che è assurdamente efficace nel rendere questo "funziona".

Copia e incolla la parte del codice nella domanda che inizia bar foo, (vale a dire il dataframe) e fare questo in un interprete Python:

In [53]: import pandas as pd 
In [54]: df = pd.read_clipboard() 

In [55]: df 
Out[55]: 
    bar foo 
0 4 1 
1 5 2 
2 6 3 

Avvertenze

  • Non includere il iPython In o Out o non funzionerà
  • Se si dispone di un indice denominato, è attualmente necessario aggiungere engine='python' (vedere this issue su GitHub). Il motore "c" è attualmente interrotto quando viene chiamato l'indice.
  • non è brillante in MultiIndexes:

Prova questo:

     0   1   2 
level1 level2        
foo a  0.518444 0.239354 0.364764 
     b  0.377863 0.912586 0.760612 
bar a  0.086825 0.118280 0.592211 

che non funziona affatto, o questo:

   0   1   2 
foo a 0.859630 0.399901 0.052504 
    b 0.231838 0.863228 0.017451 
bar a 0.422231 0.307960 0.801993 

Che funziona, ma restituisce qualcosa di totalmente errato!

+0

Si noti che il dtype sarà 'object' ie' str' quindi potrebbe essere necessario fare 'df = df.convert_objects (convert_numeric = True)' – EdChum

+0

Questo non sembra essere il caso con questo particolare esempio (il uno nel PO). Però è una buona cosa a cui prestare attenzione. – LondonRob

+0

Hmm, ho sicuramente notato che prima, ma sei corretto questo funziona correttamente – EdChum