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

У меня есть кадр данных, который я проанализировал из большего кадра, который выглядит следующим образом:

Contract Date
2012.0
2011.0
2011.0
2010.0
1312.0
1235.0
1235.0
1235.0
1230.0
.
.
111.0
111.0
110.0
110.0

Я преобразовал все это в строки, чтобы я мог разрезать значения, потому что эти даты находятся вочень странный формат.

В основном 2012.0 - 2010.0 - декабрь каждого года (2012 - 2010), но даты, такие как 1235.0 и 110.0, представлены в формате MMYY - 1235.0 - декабрь 2035 и 110.0 - январь 2010.

Я хочу сделать простой цикл для итерации по этим датам и преобразования их в месяцы и год на основе условий, которые я описал выше.Сначала я попытался получить месяц, используя неудачную попытку использования iterrows:

for index, row in contract.iterrows():
    if len(row) > 4:
        contract['Month'] = contract['Contract_Exp_Date'].str[:2]
    else:
        contract['Month'] = contract['Contract_Exp_Date'].str[:1]

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

Как я могу выполнить цикл по каждой строке и очистить месяц и год, исходя из условий, которые я упоминал выше, правильно?

1 Ответ

0 голосов
/ 11 декабря 2018

Нет необходимости условие, просто используйте логику всего, кроме последних трех символов, поэтому логика написана:

2018.0
   ^^^
   removed
111.0
  ^^^
  removed

Итак, используйте:

df['Contract']=df['Contract'].str[:-3]

А теперь:

print(df['Contract'])

Is:

0     201
1     201
2     201
3     201
4     131
5     123
6     123
7     123
8     123
9      11
10     11
11     11
12     11
Name: Contract, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...