Spark Scala中无表头DataFrame如何不指定列名删除最后一列
当然有办法!不用手动指定列名也能轻松删掉无表头DataFrame的最后一列,给你几种实用的方案:
方法1:用iloc切片直接筛选列
这是最直观的方式,利用位置索引切片,直接保留除最后一列外的所有列:
df = df.iloc[:, :-1]
解释一下::表示选中所有行,:-1表示选中从第一列到倒数第二列的所有列,自动排除最后一列,完全不需要关心列名是什么。
方法2:结合drop和列索引获取最后一列
如果你更习惯用drop方法,可以通过df.columns[-1]自动获取最后一列的标识(哪怕是无表头的默认数字索引),然后传入drop:
df = df.drop(df.columns[-1], axis=1)
这里axis=1指定我们要对列进行操作,避免和行操作混淆。如果想原地修改DataFrame(不需要重新赋值),可以加上inplace=True参数:
df.drop(df.columns[-1], axis=1, inplace=True)
举个实际例子
假设你有这样一个无表头的DataFrame:
import pandas as pd data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]] df = pd.DataFrame(data)
用上面任意一种方法,都会得到去掉最后一列的结果:
| 0 | 1 | |
|---|---|---|
| 0 | 10 | 20 |
| 1 | 40 | 50 |
| 2 | 70 | 80 |
这些方法都完全不需要手动输入列名,不管你的DataFrame列是默认数字索引还是其他无意义的标识,都能完美生效。
内容的提问来源于stack exchange,提问作者Sujeet Kumar Pandey
相关产品推荐
相关产品推荐

