从pandas数据框中删除标题列

48

我有以下数据框:

df

   A   B
0  23  12
1  21  44
2  98  21

我该如何从这个数据帧中删除列名为AB的列?一种方法是将其写入CSV文件,然后在读取时指定header=None。是否有一种不必写入CSV并重新读取的方法?


1
为什么您想要将它们移除? - Alexander
6
我有一个函数,假设它们不存在。 - user308827
1
df = pd.DataFrame(df.values) - BeRT2me
7个回答

54

我认为您无法删除列名,只能通过使用 shaperange 重置它们:

print df.shape[1]
2

print range(df.shape[1])
[0, 1]

df.columns = range(df.shape[1])
print df
    0   1
0  23  12
1  21  44
2  98  21

这与使用to_csvread_csv相同:

print df.to_csv(header=None,index=False)
23,12
21,44
98,21

print pd.read_csv(io.StringIO(u""+df.to_csv(header=None,index=False)), header=None)
    0   1
0  23  12
1  21  44
2  98  21

使用skiprows的下一个解决方案:

print df.to_csv(index=False)
A,B
23,12
21,44
98,21

print pd.read_csv(io.StringIO(u""+df.to_csv(index=False)), header=None, skiprows=1)
    0   1
0  23  12
1  21  44
2  98  21

那是一种非常聪明的方法来重新计算行或列索引。 - Rockbar

26

如何去除表格的标题行(第一行)和索引列(第一列)。

将数据写入CSV文件的方法:

df = pandas.DataFrame(your_array)
df.to_csv('your_array.csv', header=False, index=False)

读取CSV文件的方法:

df = pandas.read_csv('your_array.csv')
a = df.values
如果您想读取一个没有标题的CSV文件,请传递额外的参数header
df = pandas.read_csv('your_array.csv', header=None)

12

我曾经遇到过同样的问题,但是用以下方法解决了它:

df = pd.read_csv('your-array.csv', skiprows=[0])

1

您可以先将DataFrame转换为Numpy数组,使用以下代码:

s1=df.iloc[:,0:2].values

然后,将numpy数组转换回DataFrame:

s2=pd.DataFrame(s1)

这将返回一个没有列的DataFrame。 输入图像描述

1

我还没有看到这个解决方案,所以我来分享一下我的做法,不需要使用read_csv:

df.rename(columns={'A':'','B':''})

如果您将所有列的名称重命名为空字符串,则表将返回无标题状态。
如果您的表中有很多列,您可以先创建一个字典,而不是手动重命名。
df_dict = dict.fromkeys(df.columns, '')
df.rename(columns = df_dict)

0

这个完美运作:

要获取没有标题的数据框,请使用:

totalRow = len(df.index)
df.iloc[1: totalRow]

或者你可以像这样使用第二种方法:

totalRow = df.index.stop
df.iloc[1, totalRow]

0

从pandas DataFrame中删除标题列。可以在不写入csv并再次读取的情况下完成。

解决方案:

将列名替换为DataFrame的第一行。

df.columns = df.iloc[0,:].values

然后删除DataFrame的第一行。

df = df.tail(-1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接