Изменение значений в Pandas фрейме данных, но с сохранением столбца даты - PullRequest
2 голосов
/ 06 апреля 2020

У меня есть набор данных из 7 столбцов и 2557 строк в кадре данных pandas.

Date       Inlet 1   Inlet 2   Inlet 3   Inlet 4   Inlet 5   Inlet 6
01-01-13   0.40      0.41      0.36      10.39      0.37      0.47
02-01-13   -15       0.56      71.90     250.98     90.67     40.89
...

Я пытаюсь заменить все отрицательные значения на 0, а все значения выше 192 на 192. Мне это удалось, но в новом полученном кадре данных отсутствует первая строка (дата). Я предполагаю, что это опущено, потому что это не считается числовым значением c? Как получить новый фрейм данных с исправленными данными и с сохранением столбца даты?

Я опробовал ответы на этот вопрос: Как заменить отрицательные числа в Pandas Фрейм данных на ноль

И написал следующий код:

hrt_data = pd.read_csv(hrtdata_file)

num_hrt = hrt_data._get_numeric_data()

num_hrt[num_hrt < 0] = 0

num_hrt[num_hrt > 192] = 192

1 Ответ

1 голос
/ 06 апреля 2020

Используйте DataFrame.select_dtypes только для числовых данных c, а затем используйте DataFrame.clip с присвоением только столбцам чисел c:

print (df)
       Date  Inlet 1  Inlet 2  Inlet 3  Inlet 4  Inlet 5      col
0  01-01-13     -0.4   500.41     0.36     0.39     0.37  string1

df1 = df.select_dtypes(np.number)
df[df1.columns] = df1.clip(0, 192)
print (df)
       Date  Inlet 1  Inlet 2  Inlet 3  Inlet 4  Inlet 5      col
0  01-01-13      0.0    192.0     0.36     0.39     0.37  string1

Решение с извлечением чисел c имена столбцов, спасибо, @yatu:

cols = df.select_dtypes(np.number).columns
df[cols] = df[cols].clip(0, 192)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...