Установка столбца даты в питоне панд - PullRequest
0 голосов
/ 17 сентября 2018

В настоящее время у меня есть таблица, которая выглядит следующим образом: Currently I have a table that looks like this

Я пытаюсь дать каждому месяцу в столбце год значение года (например, сентябрь = 09-2011, Декабрь = 12-2011, март = 03-2012 и т. Д.) Я совершенно не знаю, как это сделать, так как я новичок в работе с пандами.У кого-нибудь есть указания на то, как управлять этим с помощью панд?

Ответы [ 2 ]

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

Настройка (воспроизводимый пример)

df = pd.DataFrame({'col1': [np.nan,2,3,np.nan,5,6,7], 'col2': [np.nan,20,30,np.nan,50,60,70]}, index=[2011,'September', 'December', 2012, 'March','June','April'])

            col1    col2
2011        NaN     NaN
September   2.0     20.0
December    3.0     30.0
2012        NaN     NaN
March       5.0     50.0
June        6.0     60.0
April       7.0     70.0

Может сделать

m = pd.Series([str(x) if type(x)==int else np.nan for x in df.index])
df.index = m.ffill().astype(str) + ' ' + df.index.astype(str)

df.loc[~df.isnull().all(1),:]

                col1    col2
2011 September  2.0     20.0
2011 December   3.0     30.0
2012 March      5.0     50.0
2012 June       6.0     60.0
2012 April      7.0     70.0
0 голосов
/ 17 сентября 2018

Во-первых, когда вы задаете вопрос, пожалуйста, не включайте изображения кадра данных, вместо этого включайте воспроизводимые данные. Взгляните на this , чтобы получить подсказки о том, как написать хороший вопрос.

Вам вопрос, во-первых, посмотрите на источник вашей таблицы. Например, в Excel, не могли бы вы решить проблему там?

Если вам нужно решить проблему с помощью pandas, вот один из способов:

Сначала приведем несколько выборочных данных, в которых в одном столбце смешаны годы и месяцы.

import pandas as pd
import numpy as np

data = pd.DataFrame({
    'key': ['2017', 'November', 'December', '2018', 'January']
})

Первым шагом является извлечение экземпляра, представляющего собой годы, в новый столбец, а затем «прямая заливка» для широковещательной передачи этих значений. В одну строку:

data['years'] = pd.Series([i if i.isnumeric() else np.nan for i in data['key']]).fillna(method = 'ffill')

Теперь отбросьте строки, которые являются годами. Похоже, в ваших данных эти данные не связаны.

data = data[~data['key'].str.isnumeric()]

Дает нам:

        key years
1  November  2017
2  December  2017
4   January  2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...