Что такое Pythoni c Способ выполнения обновления подмножества на месте для Pandas кадра данных (и Numpy) - PullRequest
0 голосов
/ 03 февраля 2020

Предположим, что 'data' - это Pandas DataFrame, где 'row' - это все строки, а 'cols' - это некоторое число, меньшее или равное фактическому количеству столбцов. У меня есть следующий код, который отлично работает, чтобы умножить все данные в этом пространстве на «масштаб». Я специально избегаю использования имен столбцов, мне нужно использовать индексы столбцов.

rows = len(data.index)
for row in range(0,rows):
    for col in range (0, cols):
        data.iat[row,col] = data.iat[row,col] * scale

Однако, как вы можете видеть, это не похоже на Python или Pandas. Что такое путь Python / Pandas? Предположим, что будут затронуты все строки, но только столбцы с 0-го по столбец-1. Например, если размер кадра данных 5x4, но столбец = 3, будут обновлены только столбцы 0,1,2 (во всех строках). Другими словами, если это мой фрейм данных:

1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4

, а масштаб равен 10, а столбцы - 3, тогда результат должен быть:

10 20 30 4
10 20 30 4
10 20 30 4
10 20 30 4
10 20 30 4

Кроме того, тот же вопрос / ответьте пожалуйста для Numpy массива.

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Не уверен, что это именно то, что вам нужно: он использует метод ilo c для изменения значений столбцов. Основа c Идея ilo c заключается в использовании индексов для строк и столбцов. Вы можете прочитать больше об этом здесь :

df.iloc[:,0:3] = df.iloc[:,0:3].mul(10)

    0   1   2   3
0   10  20  30  4
1   10  20  30  4
2   10  20  30  4
3   10  20  30  4
4   10  20  30  4

Еще один вариант, который более лаконичен, предлагает Джон Клемент:

df.iloc[:,:-1] *= 10 

Это проще, меньше код, и все еще понятно. Спасибо Джон!

0 голосов
/ 03 февраля 2020

использовать нарезку данных

>>> df = pd.DataFrame({'a': [1,1,1,1,1], 'b': [2,2,2,2,2], 'c': [3,3,3,3,3], 'd': [4,4,4,4,4]})                                                                 

>>> df                                                                                                                                              
   a  b  c  d
0  1  2  3  4
1  1  2  3  4
2  1  2  3  4
3  1  2  3  4
4  1  2  3  4

>>> df.loc[:, 'a':'c'] = df.loc[:, 'a':'c'] * 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...