从pandas数据帧中删除标题列

时间:2016-04-18 07:40:48

标签: python pandas

我有这个人。数据帧:

DF

   A   B
0  23  12
1  21  44
2  98  21

如何从此数据框中删除列名AB?一种方法可能是将其写入csv文件,然后在指定header = None时读取它。如果没有写出csv并重新阅读,有没有办法做到这一点?

5 个答案:

答案 0 :(得分:24)

我认为您无法删除列名称,只能使用shape将其重置为range

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

答案 1 :(得分:7)

如何摆脱标题(第一行)和索引(第一列)。

要写入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)

答案 2 :(得分:1)

还没有看到这种解决方案,所以这是我不使用read_csv的方法:

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

如果将所有列名重命名为空字符串,则表将返回而没有标题。

如果表中有很多列,则可以先创建一个字典,而无需手动重命名:

df_dict = dict.fromkeys(df.columns, '')
df.rename(columns = df_dict)

答案 3 :(得分:0)

我遇到了同样的问题,但是用这种方式解决了:

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

答案 4 :(得分:0)

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

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

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

s2=pd.DataFrame(s1)

这将返回一个没有列的 DataFrame。 enter image description here