Python&Pandas:无法删除列

2024-06-25 22:55:53 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的部分数据:

USAF,   NCDC,  Date,     HrMn, I, Type,  QCP,  Dir, Q, I, Spd,   Q, 
034820,99999,19490801,0000,4,  SAO,    ,270,1,N,  5.7,1,
034820,99999,19490801,0100,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0200,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0300,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0400,4,  SAO,    ,270,1,N,  6.7,1,
034820,99999,19490801,0500,4,  SAO,    ,270,1,N,  8.7,1,
034820,99999,19490801,0600,4,  SAO,    ,270,1,N,  8.2,1,
034820,99999,19490801,0700,4,  SAO,    ,270,1,N,  8.2,1,

我试图删除数据,但它报告某些列不存在。在

^{pr2}$

报告:

ValueError: labels ['NCDC'] not contained in axis

那么我的代码怎么了?我曾经很好地使用df.drop(['a', 'b', 'c'], 1,inplace=True)。在

更新:

df.columns.tolist()
['USAF',
 '   NCDC',
 '  Date',
 '     HrMn',
 ' I',
 ' Type',
 '  QCP',
 '  Dir',
 ' Q',
 ' I.1',
 ' Spd',
 '   Q',
 ' ']

Tags: 数据dfdatelabelstype报告dirsao
1条回答
网友
1楼 · 发布于 2024-06-25 22:55:53

^{}的默认分隔符是逗号,但您的数据包含空格,这在标头和数据中引入了前导空格,如果您传递skipinitialspace=True,则它将导入精细:

In [106]:
import io
import pandas as pd
t="""USAF,   NCDC,  Date,     HrMn, I, Type,  QCP,  Dir, Q, I, Spd,   Q, 
034820,99999,19490801,0000,4,  SAO,    ,270,1,N,  5.7,1,
034820,99999,19490801,0100,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0200,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0300,4,  SAO,    ,270,1,N,  4.6,1,
034820,99999,19490801,0400,4,  SAO,    ,270,1,N,  6.7,1,
034820,99999,19490801,0500,4,  SAO,    ,270,1,N,  8.7,1,
034820,99999,19490801,0600,4,  SAO,    ,270,1,N,  8.2,1,
034820,99999,19490801,0700,4,  SAO,    ,270,1,N,  8.2,1,"""
df = pd.read_csv(io.StringIO(t), skipinitialspace=True)
df

Out[106]:
    USAF   NCDC      Date  HrMn  I Type  QCP  Dir  Q I.1  Spd  Q.1  \
0  34820  99999  19490801     0  4  SAO  NaN  270  1   N  5.7    1   
1  34820  99999  19490801   100  4  SAO  NaN  270  1   N  4.6    1   
2  34820  99999  19490801   200  4  SAO  NaN  270  1   N  4.6    1   
3  34820  99999  19490801   300  4  SAO  NaN  270  1   N  4.6    1   
4  34820  99999  19490801   400  4  SAO  NaN  270  1   N  6.7    1   
5  34820  99999  19490801   500  4  SAO  NaN  270  1   N  8.7    1   
6  34820  99999  19490801   600  4  SAO  NaN  270  1   N  8.2    1   
7  34820  99999  19490801   700  4  SAO  NaN  270  1   N  8.2    1   

   Unnamed: 12  
0          NaN  
1          NaN  
2          NaN  
3          NaN  
4          NaN  
5          NaN  
6          NaN  
7          NaN

然后可以删除列:

^{pr2}$

相关问题 更多 >