Переименовать столбец значений в пандах

Я бы сделал это с интерфейсом IValidatableObject из System.ComponentModel.DataAnnotations, что позволяет добавлять дополнительные правила проверки, где вы можете сделать гораздо большую проверку. Добавьте интерфейс в свой класс, а затем внедрите метод Validate, где вы можете сравнить StartDateTime с текущей датой / временем, а также сравнить EndDateTime с StartDateTime, например

public class MyClass : IValidatableObject
{               
    [Required(ErrorMessage="Start date and time cannot be empty")]
    //validate:Must be greater than current date
    [DataType(DataType.DateTime)]
    public DateTime StartDateTime { get; set; }

    [Required(ErrorMessage="End date and time cannot be empty")]
    //validate:must be greater than StartDate
    [DataType(DataType.DateTime)]
    public DateTime EndDateTime { get; set; }       

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        List<ValidationResult> results = new List<ValidationResult>();

        if (StartDateTime < DateTime.Now)
        {
            results.Add(new ValidationResult("Start date and time must be greater than current time", new []{"StartDateTime"}));
        }

        if (EndDateTime <= StartDateTime)
        {
            results.Add(new ValidationResult("EndDateTime must be greater that StartDateTime", new [] {"EndDateTime"}));
        }

        return results;
    }     
}

. только потенциальный недостаток этого заключается в том, что Validate работает на стороне сервера, а не в проверке jQuery.

2
задан RavinderSingh13 2 March 2019 в 07:35
поделиться

1 ответ

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

df.region = df.region.str.split('_').str[1].astype(int)

Или использовать extract с регулярным выражением для извлечения целых чисел:

[111 ]

Образец :

df = pd.DataFrame({'region':['region_1','region_2','region_3']})
df.region = df.region.str.extract('(\d+)', expand=False).astype(int)
print (df)
   region
0       1
1       2
2       3
0
ответ дан jezrael 2 March 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: