有没有办法获取和删除最后一行,如python本地列表的pop
方法?
我知道我可以在下面做。我只是想让它成为一条线。
df.ix[df.index[-1]]
df = df[:-1]
答案 0 :(得分:7)
假设样本数据帧:
In[51]:df
Out[51]:
a b
0 1 5
1 2 6
2 3 7
3 4 8
您可以使用df.drop:
In[52]:df,last_row=df.drop(df.tail(1).index),df.tail(1)
In[53]:df
Out[53]:
0 1
0 1 5
1 2 6
2 3 7
In[54]:last_row
Out[54]:
a b
3 4 8
或使用numpy作为np
:
df,last_row=pd.Dataframe(np.delete(df.values,(-1),axis=0)),df.tail(1)
答案 1 :(得分:1)
我测试了两种方法来做到这一点:df = df[: -1] 和 df = df.drop(df.index[-1])。第一个效率更高
这是 3000 行的测试。
from datetime import datetime
start = datetime.now()
while df.shape[0] > 1:
df = df.drop(df.index[-1])
print(datetime.now() - start)
结果:0:00:01.558176
还有, df = df.drop(df.index[-1])
from datetime import datetime
start = datetime.now()
while prices.shape[0] > 1:
prices = prices[: -1]
print(datetime.now() - start)
结果:0:00:00.337987