удалить безымянные столбцы pandas данных - PullRequest
0 голосов
/ 27 февраля 2020

Я студент, и у меня есть проблема, которую я не могу понять, как ее решить. У меня есть данные CSV, как это:

"","","","","","","","","",""
"","report","","","","","","","",""
"","bla1","bla2","","","","bla3","","",""
"","bla4","bla5","","","","","bla6","",""
"","bla6","bla7","bla8","","1","2","3","4","5"
"","bla9","bla10","bla11","","6","7","8","9","10"
"","bla12","bla13","bla14","","11","12","13","14","15"
"","","","","","","","","",""

код для чтения CSV, как это:

SMT = pd.read_csv(file.csv, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3))
SMT.fillna(0, inplace=True)

SMT распечатать:

  Unnamed: 5 Unnamed: 6 Unnamed: 7 Unnamed: 8
0          1          2          3          4
1          6          7          8          9
2         11         12         13         14

ожидаемый вывод:

 1          2          3          4
 6          7          8          9
11         12         13         14

я уже пытаюсь skiprows=(0,1,2,3), но это будет так:

           1          2          3          4
0          6          7          8          9
1         11         12         13         14
2          0          0          0          0

я уже пытаюсь поставить index=Flase SMT = pd.read_csv(file.csv,index=False, usecols=(5,6,7,8), skiprows=(1,2,3), nrows=(3)) или index_col=0 / None / False не работает, и в последний раз я пробовал вот так:

df1 = SMT.loc[:, ~SMT.columns.str.contains('^Unnamed')]

и я получил

Empty DataFrame columns: [] Index: [0, 1, 2]

я просто хочу избавиться от Безымянный: 5 ~ Безымянный: 8, как правильный способ избавиться от этой Безымянный вещь?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

«Безымянный» просто говорит, что pandas не знает, как назвать столбцы. Так что это просто имена. Вы можете установить такие имена в read_csv

pd.read_csv("test.csv", usecols=(5,6,7,8), skiprows=3, nrows=3, header=0, names=["c1", "c2", "c3", "c4"])

Вывод:

   c1  c2  c3  c4
0   1   2   3   4
1   6   7   8   9
2  11  12  13  14

Вам нужно установить header=0, чтобы pandas знал, что это обычно заголовок. Или вы установите skiprows=4

0 голосов
/ 27 февраля 2020

Просто назначьте новые имена столбцов:

 df = pd.read_csv('temp.csv', usecols=[5,6,7,8], skiprows=[1,2,3], nrows=3)
 df.columns = range(1, 1+len(df.columns))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...