изменить конкретный столбец на имена строк в Pandas - PullRequest
0 голосов
/ 26 сентября 2018

Я вижу, что это было задано на этом сайте здесь .Заимствованные идеи из этого поста, но не работает в моем случае.Я читаю некоторые данные из листа Excel и пытаюсь преобразовать их во фрейм данных Pandas с индексом столбцов и строк.Первая строка - это заголовок года в Excel, и я попытался сделать его заголовком столбца, выполнив df.columns=df.iloc[0]

. Поэтому, когда я запускаю df.columns, он перезапускается: Index([None, 2014.0, 2015.0, 2016.0, 2017.0, 2018.0], dtype='object', name=0) enter image description here

Моя проблема сейчас заключается в преобразовании столбца с названиями месяцев в качестве имен строк.Я пытался

df.set_index('None',inplace=True)

Но это возвращает KeyError: 'None'

  1. Почему я не могу назвать 'Нет', поскольку это называется одним из имен столбцов.
  2. Как мне преобразовать названия этих месяцев, из которых можно было бы вывести график, в xaxis позже?любой формат даты и времени?

Редактировать: Добавление примера данных здесь

Обновление: я решил это с помощью df.columns = ['Month', 2014, 2015, 2016, 2017, 2018] и df.drop(df.index[0])

Ответы [ 4 ]

0 голосов
/ 26 сентября 2018

С именем столбца как ' Нет ' вы не можете установить его в качестве индекса, поэтому для того, чтобы установить этот столбец как индекс, сначала переименуйте этот столбец.

df.columns.values[0]='First'

И затем установитеэто как индекс как -:

df.set_index('First')
0 голосов
/ 26 сентября 2018

Вы можете переименовать столбцы следующим образом:

df.columns = ['Нет', 2014.0, 2015.0, 2016.0, 2017.0, 2018.0]

Теперь вашкоманда должна работать

0 голосов
/ 26 сентября 2018

Попробуйте вот так

df.set_index(df.None)
0 голосов
/ 26 сентября 2018

Для меня хорошо работает добавить 2 параметра - index_col=[0] для преобразования первого столбца в index и usecols с range для выбора всех столбцов без Unnamed столбца:

df = pd.read_excel('sample.xlsx', usecols=range(1, 100))

print (df)
   Unnamed: 0  2014  2015       2016   2017   2018
0         Jan  42.9  47.2  43.000000  43.00  48.98
1         Feb  36.6  45.0  40.300000  43.00  45.92
2         Mar  37.8  42.8  44.805668  43.00  43.00
3         Apr  40.9  44.4  43.900000  41.30  44.46
4         May  40.5  47.1  44.200000  41.97  42.31
5         Jun  41.8  46.9  44.600000  45.70    NaN
6         Jul  40.5  45.0  43.500000  45.49    NaN
7         Aug  44.3  45.0  43.800000  44.59    NaN
8         Sep  43.8  47.3  47.600000  47.25    NaN
9         Oct  44.2  47.0  47.600000  50.08    NaN
10        Nov  44.2  43.7  50.078663  50.93    NaN
11        Dec  48.8  45.5  46.500000  48.37    NaN

df = pd.read_excel('sample.xlsx', index_col=[0], usecols = range(1, 100))

print (df)
     2014  2015       2016   2017   2018
Jan  42.9  47.2  43.000000  43.00  48.98
Feb  36.6  45.0  40.300000  43.00  45.92
Mar  37.8  42.8  44.805668  43.00  43.00
Apr  40.9  44.4  43.900000  41.30  44.46
May  40.5  47.1  44.200000  41.97  42.31
Jun  41.8  46.9  44.600000  45.70    NaN
Jul  40.5  45.0  43.500000  45.49    NaN
Aug  44.3  45.0  43.800000  44.59    NaN
Sep  43.8  47.3  47.600000  47.25    NaN
Oct  44.2  47.0  47.600000  50.08    NaN
Nov  44.2  43.7  50.078663  50.93    NaN
Dec  48.8  45.5  46.500000  48.37    NaN

Иливыберите второй столбец для индекса и удалите столбец Unnamed: 0:

df = pd.read_excel('sample.xlsx', index_col=[1])

print (df)
     Unnamed: 0  2014  2015       2016   2017   2018
Jan         NaN  42.9  47.2  43.000000  43.00  48.98
Feb         NaN  36.6  45.0  40.300000  43.00  45.92
Mar         NaN  37.8  42.8  44.805668  43.00  43.00
Apr         NaN  40.9  44.4  43.900000  41.30  44.46
May         NaN  40.5  47.1  44.200000  41.97  42.31
Jun         NaN  41.8  46.9  44.600000  45.70    NaN
Jul         NaN  40.5  45.0  43.500000  45.49    NaN
Aug         NaN  44.3  45.0  43.800000  44.59    NaN
Sep         NaN  43.8  47.3  47.600000  47.25    NaN
Oct         NaN  44.2  47.0  47.600000  50.08    NaN
Nov         NaN  44.2  43.7  50.078663  50.93    NaN
Dec         NaN  48.8  45.5  46.500000  48.37    NaN

df = pd.read_excel('sample.xlsx', index_col=[1]).drop('Unnamed: 0', axis=1)

print (df)
     2014  2015       2016   2017   2018
Jan  42.9  47.2  43.000000  43.00  48.98
Feb  36.6  45.0  40.300000  43.00  45.92
Mar  37.8  42.8  44.805668  43.00  43.00
Apr  40.9  44.4  43.900000  41.30  44.46
May  40.5  47.1  44.200000  41.97  42.31
Jun  41.8  46.9  44.600000  45.70    NaN
Jul  40.5  45.0  43.500000  45.49    NaN
Aug  44.3  45.0  43.800000  44.59    NaN
Sep  43.8  47.3  47.600000  47.25    NaN
Oct  44.2  47.0  47.600000  50.08    NaN
Nov  44.2  43.7  50.078663  50.93    NaN
Dec  48.8  45.5  46.500000  48.37    NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...