Создать новый столбец с метками на основе значений других столбцов - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь создать новый столбец на основе значений другого столбца, чтобы по существу пометить значения в другом столбце в два сегмента.

так что если даты 4/24, 4/26 мне нужны метки 1 и 4/25 метки 2,

ожидаемый df будет выглядеть так:

date | label 
4/24     1
4/25     2
4/26     1
4/24     1
4/26     1

где метка будет новым столбцом

Спасибо за внимание

Ответы [ 4 ]

1 голос
/ 11 июля 2019

Я думаю, это то, что вы ищете:

import pandas as pd
dataframe = pd.DataFrame()
dataframe["date"] = ['4/24', '4/25', '4/26', '4/24', '4/26']

dictionary = {'4/24' : '1', '4/25' : '2', '4/26':'1' }
dataframe["label"] = dataframe["date"].map(dictionary)
dataframe

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

Выход:

date    label
0   4/24    1
1   4/25    2
2   4/26    1
3   4/24    1
4   4/26    1

Надеюсь, это поможет!

0 голосов
/ 11 июля 2019

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

df['label'] = df['date'].str[-1].eq('5') + 1 

Вывод:

   date  label
0  4/24      1
1  4/25      2
2  4/26      1
3  4/24      1
4  4/26      1
0 голосов
/ 11 июля 2019

Гм, поэтому, если вы хотите напечатать указанный столбец, вы можете просто сделать это:

print(date | label)
dates = ['4/24', '4/25', '4/26', '4/24', '4/26']
labels = ['1','2','1','2','1']
for i in range(len(dates)):
    print(dates[i]+'     '+labels[i])

Я думаю, это было бы то, что вы хотели

Это означает, что у вас есть все ваши метки и даты в двух списках, упорядоченных по индексу.

Или вы можете сделать это:

datesToBePrinted = zip(dates, labels)
for i in datesToBePrinted:
    print(i)
0 голосов
/ 11 июля 2019

Предположим, у вас есть функция классификации

def classify(date):
    # returns a label for date

Тогда вы можете достичь того, что вам нужно:

df['label'] = pd.Series(classify(df['date'].values), index=df.index)
...