Как изменить значения фрейма данных со случайными значениями условий, не удовлетворяющих случаям - PullRequest
0 голосов
/ 20 декабря 2018

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

Я попытался использовать iteratetuple для строк и iterateitems для столбцов и проверитьзначение и обновление.

требуется некоторое время, есть ли прямой способ обновления каждой строки.

                         2018-07-01  2018-07-02  2018-07-03  2018-07-04

cell_name
1002_NUc_Marathalli_7        0.734       0.550       5.985       0.481
1002_NUc_Marathalli_8        1.338       1.220       0.911       0.601
1002_NUc_Marathalli_9        0.330       1.180       0.754       0.631
1003_IU2_Munnekolalu_7       0.628       0.479       0.988       0.694
1003_IU2_Munnekolalu_8       5.327       6.831       8.387       9.428

1 Ответ

0 голосов
/ 20 декабря 2018

Использование mask с numpy.random.rand:

np.random.seed(123)

arr = np.random.rand(*df.shape)
print (arr)
[[0.69646919 0.28613933 0.22685145 0.55131477]
 [0.71946897 0.42310646 0.9807642  0.68482974]
 [0.4809319  0.39211752 0.34317802 0.72904971]
 [0.43857224 0.0596779  0.39804426 0.73799541]
 [0.18249173 0.17545176 0.53155137 0.53182759]]

m = (df > 2) & (df < 8)

#replace only values by mask
df1 = df.mask(m, arr)
print (df1)
                        2018-07-01  2018-07-02  2018-07-03  2018-07-04
1002_NUc_Marathalli_7     0.734000    0.550000    0.226851       0.481
1002_NUc_Marathalli_8     1.338000    1.220000    0.911000       0.601
1002_NUc_Marathalli_9     0.330000    1.180000    0.754000       0.631
1003_IU2_Munnekolalu_7    0.628000    0.479000    0.988000       0.694
1003_IU2_Munnekolalu_8    0.182492    0.175452    8.387000       9.428

#replace all rows if exist at least one value True in mask
df2 = df.mask(m.any(axis=1), arr, axis=0)
print (df2)
                        2018-07-01  2018-07-02  2018-07-03  2018-07-04
1002_NUc_Marathalli_7     0.696469    0.286139    0.226851    0.551315
1002_NUc_Marathalli_8     1.338000    1.220000    0.911000    0.601000
1002_NUc_Marathalli_9     0.330000    1.180000    0.754000    0.631000
1003_IU2_Munnekolalu_7    0.628000    0.479000    0.988000    0.694000
1003_IU2_Munnekolalu_8    0.182492    0.175452    0.531551    0.531828

Подробности :

print (m)
                        2018-07-01  2018-07-02  2018-07-03  2018-07-04
1002_NUc_Marathalli_7        False       False        True       False
1002_NUc_Marathalli_8        False       False       False       False
1002_NUc_Marathalli_9        False       False       False       False
1003_IU2_Munnekolalu_7       False       False       False       False
1003_IU2_Munnekolalu_8        True        True       False       False

print (m.any(axis=1))
1002_NUc_Marathalli_7      True
1002_NUc_Marathalli_8     False
1002_NUc_Marathalli_9     False
1003_IU2_Munnekolalu_7    False
1003_IU2_Munnekolalu_8     True
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...