Python датафрейм добавляет столбцы в группы по 3 - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть фрейм данных с n строками:

df = 1 2 3
     4 5 6
     4 2 3
     3 1 9
     6 7 0
     9 2 5

Я хочу добавить столбцы с одинаковым значением в группах по 3. n (количество строк) наверняка разделено на 3.

Таким образом, новый df будет:

df = 1 2 3 A
     4 5 6 A
     4 2 3 A
     3 1 9 B
     6 7 0 B
     9 2 5 B

Каков наилучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Сначала удалите последние строки, если они не делятся на 3, с помощью DataFrame.iloc, а затем создайте 100% уникальную группу путем деления на 3 с целочисленным делением на 3:

print (df)
   a  b  d
0  1  2  3
1  4  5  6
2  4  2  3
3  3  1  9
4  6  7  0
5  9  2  5
6  0  0  4 <- removed last row

N = 3
num = len(df) // N * N
df = df.iloc[:num]
df['groups'] = np.arange(len(df)) // N
print (df)
   a  b  d  groups
0  1  2  3       0
1  4  5  6       0
2  4  2  3       0
3  3  1  9       1
4  6  7  0       1
5  9  2  5       1
0 голосов
/ 09 апреля 2020

IIU C, групповой режим:

df['new_col'] = df.sum(1).groupby(np.arange(len(df))//3).transform('sum')

Выход:

   0  1  2  new_col
0  1  2  3       30
1  4  5  6       30
2  4  2  3       30
3  3  1  9       42
4  6  7  0       42
5  9  2  5       42
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...