Попытка заполнить новый столбец в таблице панд значением из списка, используя значение из существующего столбца в той же таблице, что и индекс - PullRequest
0 голосов
/ 19 марта 2019

У меня есть стол для панд. Это имеет отметку времени в столбце. Я уже разобрал эту временную метку в нечто понятное. Я также уже получил день недели как целое число. То, что я хочу, это добавить новый столбец с названием дня недели. У меня есть список имен (пн-вс). Как правильно добавить новый столбец, используя значение в существующем столбце weekdayINT в качестве индекса для списка имен дней недели, чтобы заполнить этот новый столбец.

Вот что у меня есть:

weekdays = ['mon','tue','wed','thur','fri','sat','sun']
def calc_time(df):

    df['parsedtime'] = pandas.to_datetime(df['Timestamp'], unit='s')
    df['weekdayINT'] = df['parsedtime'].dt.dayofweek
    df['weekdayName'] = numpy.nan
    #????Not sure how to fill this new column.
    return df

Очень плохо знаком с пандами и посещает уроки по обработке данных. Я знаю, что могу перебирать строки данных. Но есть более 2 миллионов строк. Я уверен, что у панд есть лучший способ сделать это. Похоже, было бы обычным делом использовать значения из другого столбца в качестве индекса для списка, чтобы заполнить новый столбец значениями.

Спасибо за помощь.

1 Ответ

1 голос
/ 19 марта 2019

pandas имеет встроенную функцию под названием day_name:

# sample data
df = pd.DataFrame(pd.date_range('2019-01-01', '2019-01-10'))

# use day_name
df['day of week'] = df[0].dt.day_name()

           0 day of week
0 2019-01-01     Tuesday
1 2019-01-02   Wednesday
2 2019-01-03    Thursday
3 2019-01-04      Friday
4 2019-01-05    Saturday
5 2019-01-06      Sunday
6 2019-01-07      Monday
7 2019-01-08     Tuesday
8 2019-01-09   Wednesday
9 2019-01-10    Thursday

или вы можете map с указанием:

# sample data
df = pd.DataFrame(pd.date_range('2019-01-01', '2019-01-10'))
# int of day of week
df['day_of_week'] = df[0].dt.dayofweek
# map with a dict
df['day_of_week_name'] = df['day_of_week'].map({0:'mon', 1:'tue',
                                                2:'wed', 3:'thur',
                                                4:'fri', 5:'sat', 6:'sun'})

           0  day_of_week day_of_week_name
0 2019-01-01            1              tue
1 2019-01-02            2              wed
2 2019-01-03            3             thur
3 2019-01-04            4              fri
4 2019-01-05            5              sat
5 2019-01-06            6              sun
6 2019-01-07            0              mon
7 2019-01-08            1              tue
8 2019-01-09            2              wed
9 2019-01-10            3             thur
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...