web-dev-qa-db-fra.com

Extraire la première et la dernière ligne d'une base de données dans des pandas

Comment puis-je extraire les première et dernière lignes d'un cadre de données donné en tant que nouveau cadre de données dans les pandas?

J'ai essayé d'utiliser iloc pour sélectionner les lignes souhaitées, puis concat comme dans:

df=pd.DataFrame({'a':range(1,5), 'b':['a','b','c','d']})
pd.concat([df.iloc[0,:], df.iloc[-1,:]])

mais cela ne produit pas de trame de données pandas:

a    1
b    a
a    4
b    d
dtype: object
17
Bryan P

Je pense que le moyen le plus simple est .iloc[[0, -1]].

df = pd.DataFrame({'a':range(1,5), 'b':['a','b','c','d']})
df2 = df.iloc[[0, -1]]

print df2

   a  b
0  1  a
3  4  d
43
su79eu7k

Vous pouvez également utiliser head et tail:

In [29]: pd.concat([df.head(1), df.tail(1)])
Out[29]:
   a  b
0  1  a
3  4  d
18
Colonel Beauvel

Je pense que vous pouvez essayer d’ajouter le paramètre axis=1 à concat , car les sorties de df.iloc[0,:] et df.iloc[-1,:] sont Series et transposées par T :

print df.iloc[0,:]
a    1
b    a
Name: 0, dtype: object

print df.iloc[-1,:]
a    4
b    d
Name: 3, dtype: object

print pd.concat([df.iloc[0,:], df.iloc[-1,:]], axis=1)
   0  3
a  1  4
b  a  d

print pd.concat([df.iloc[0,:], df.iloc[-1,:]], axis=1).T
   a  b
0  1  a
3  4  d
4
jezrael