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
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
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
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