Как изменить столбец данных с числовой датой в текстовую форму?

1

У меня есть такой набор данных

Дата ---------- F/R ------ S/R

22/22/2012 --- 72-------- 00

9/21/2018 ----- 22 --------- 17

Теперь, что я пытаюсь сделать, просто хочу заменить эту дату в текстовом формате, например, "9", я хочу "сентябрь", а на день "22" я хочу "субботу". Сначала я попытался изменить месяц с числового на текстовый с помощью этого фрагмента кода и не смог

import pandas as pd


# Importing the dataset
dataset = pd.read_csv('teer1_new1.csv')

def f(x):
    if (x['Date']):
        if (x[0:1] == '9/'):
            return 'September'
    else:
        return 'none'

dataset['Date'] = dataset.apply(f, axis=1)

Я получаю эту ошибку

ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')

И да, в моей колонке даты в DataFrame есть много строк, для вашего напоминания.

Теги:
pandas
dataframe
rows

2 ответа

1
Лучший ответ

Вам нужно преобразовать даты в datetimes first - по параметру parse_dates в read_csv или pandas.to_datetime, в последнем случае использовать Series.dt.month_name и Series.dt.day_name:

df = pd.read_csv('teer1_new1.csv', parse_dates=['Date'])
#alternative
#df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

df['Date1'] = df['Date'].dt.day_name()
df['Date2'] = df['Date'].dt.month_name()
print (df)
        Date  F/R  S/R     Date1      Date2
0 2018-09-22   72    0  Saturday  September
1 2018-09-21   22   17    Friday  September
  • 0
    для этой альтернативы консоль #df ['Date'] = pd.to_datetime (df ['Date'], format = '% m /% d /% Y') сообщает, что формат не совпадает. И если я запускаю эту альтернативу без параметра формата, то все идет хорошо.
  • 2
    @AdityaMandal - тогда попробуйте df['Date'] = pd.to_datetime(df['Date'])
Показать ещё 9 комментариев
0
dataset['Date'] = pd.to_datetime(dataset['Date'])
## returns month
dataset['monthname'] = dataset['Date'].dt.month_name()
## returns day
dataset['day'] = dataset['Date'].dt.dayofweek()

## creating a map of dayofweek to day
s = {6 : 'Sunday', 0: 'Monday', 1: 'Tuesday', 
     2: 'Wednesday', 3: 'Thursday', 4: 'Friday', 5: 'Saturday'}
s = pd.Series(s)
dataset['dayname'] = dataset['day'].map(s)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню