我认为这应该很简单,但我尝试了一些想法,但没有一个有效:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
Run Code Online (Sandbox Code Playgroud)
我尝试使用负指数,但这也导致错误.我仍然必须误解一些基本的东西.
提前致谢.
Kan*_*hew 103
要删除最后n行:
df.drop(df.tail(n).index,inplace=True) # drop last n rows
Run Code Online (Sandbox Code Playgroud)
同样,您可以先删除n行:
df.drop(df.head(n).index,inplace=True) # drop first n rows
Run Code Online (Sandbox Code Playgroud)
ely*_*ely 55
由于Python中的索引定位是基于0的,因此index
在对应的位置实际上不会有元素len(DF)
.你需要这样last_row = len(DF) - 1
:
In [49]: dfrm
Out[49]:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
9 0.834706 0.002989 0.333436
[10 rows x 3 columns]
In [50]: dfrm.drop(dfrm.index[len(dfrm)-1])
Out[50]:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
[9 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)
但是,写起来要简单得多DF[:-1]
.
blu*_*sky 51
DF[:-n]
Run Code Online (Sandbox Code Playgroud)
其中n是要删除的最后一行数.
要删除最后一行:
DF = DF[:-1]
Run Code Online (Sandbox Code Playgroud)
the*_*ish 41
没想到没人提这个:
# To remove last n rows
df.head(-n)
# To remove first n rows
df.tail(-n)
Run Code Online (Sandbox Code Playgroud)
在 1000 行的 DataFrame 上运行速度测试表明切片和head
/tail
比使用快约 6 倍drop
:
>>> %timeit df[:-1]
125 µs ± 132 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> %timeit df.head(-1)
129 µs ± 1.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> %timeit df.drop(df.tail(1).index)
751 µs ± 20.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)
Nir*_*man 13
我发现的最好的解决方案是(不一定?)做完整的复制
df.drop(df.index[-1], inplace=True)
Run Code Online (Sandbox Code Playgroud)
当然,您可以简单地省略inplace=True
创建新的数据框,并且您还可以N
通过简单地获取df.index
(df.index[-N:]
删除最后 N 行) 的切片来轻松删除最后一行。所以这种方式不仅简洁而且非常灵活。
只需使用索引
df.iloc[:-1,:]
Run Code Online (Sandbox Code Playgroud)
这就是 iloc 存在的原因。您也可以使用头部或尾部。
小智 5
stats = pd.read_csv("C:\\py\\programs\\second pandas\\ex.csv")
Run Code Online (Sandbox Code Playgroud)
统计输出:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
9 0.834706 0.002989 0.333436
Run Code Online (Sandbox Code Playgroud)
只是使用 skipfooter=1
跳过脚注:整数,默认为 0
要跳过的文件底部的行数
stats_2 = pd.read_csv("C:\\py\\programs\\second pandas\\ex.csv", skipfooter=1, engine='python')
Run Code Online (Sandbox Code Playgroud)
stats_2 的输出
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
96807 次 |
最近记录: |