2015-08-13 3 views
2

Вот часть моих данных: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, 

Я пытаюсь сбросить данные, но она сообщает некоторые колонки не существует.

ipath= "C:\Users\Administrator\Desktop\科研风速数据资料\Marham\\marham.txt" 
uipath = unicode(ipath , "utf8") 
file2 = open(uipath) 
df = pd.read_csv(uipath,header=0) 
# I can drop USAF, but unable to drop NCDC, I, Q, 
df.drop(['USAF', 'NCDC'], 1,inplace=True) 
df.describe() 

Доклады:

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

Так что же случилось с моим кодом? Раньше я хорошо использовал df.drop(['a', 'b', 'c'], 1,inplace=True).

UPDATE:

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

можете ли вы пост из put from 'df.columns.tolist()' – EdChum

+0

@tom, это возможно, но я не знаю, как с этим бороться. В моем предыдущем опыте работы с пандами он автоматически превращает второй 'Q' в' Q.1' при чтении данных. Однако в моем случае это не удалось, и я не знаю, почему. Однако это не может «отбросить» NCDC. – cqcn1991

+1

Разделитель по умолчанию - это запятая '', '' в 'read_csv', поэтому ваши пробелы в вашем csv теперь являются частью вашего столбца и данных. – EdChum

ответ

2

по умолчанию разделитель для read_csv запятая, но данные содержат пробелы, это ввел ведущие пробелы в своем заголовке и данных, если вы передаете 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 

вы можете уронить столбцы:

In [108]: 
df.drop(['USAF', 'NCDC'], 1,inplace=True) 
df.info() 

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 8 entries, 0 to 7 
Data columns (total 11 columns): 
Date   8 non-null int64 
HrMn   8 non-null int64 
I    8 non-null int64 
Type   8 non-null object 
QCP   0 non-null float64 
Dir   8 non-null int64 
Q    8 non-null int64 
I.1   8 non-null object 
Spd   8 non-null float64 
Q.1   8 non-null int64 
Unnamed: 12 0 non-null float64 
dtypes: float64(3), int64(6), object(2) 
memory usage: 768.0+ bytes 
Смежные вопросы