Переименуйте каждый 2 столбец с таким же от другого панды данных кадра - PullRequest
1 голос
/ 04 ноября 2019

У меня есть 2 образца фрейма данных:

df1 = 

a_1  b_1  a_2  b_2
  1    2    3    4
  5    6    7    8

и

df2 = 

 c    
12
14

Я хочу добавить значения c в качестве суффикса в следующем порядке:

df3 = 

12_a_1  12_b_1  14_a_2  14_b_2
     1       2       3       4
     5       6       7       8

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

один из вариантов - это понимание списка:

import itertools
# use itertools to repeat values of df2
prefix = list(itertools.chain.from_iterable(itertools.repeat(str(x), 2) for x in df2['c'].values))

# list comprehension to create new column names
df1.columns = [p+'_'+c for c,p in zip(df1.columns, prefix)]
print(df1)

   12_a_1  12_b_1  14_a_2  14_b_2
0       1       2       3       4
1       5       6       7       8
0 голосов
/ 04 ноября 2019

Используйте str.split и map

s = (df1.columns.str.split('_').str[-1].astype(int) - 1).map(df2.c)
df1.columns = s.astype(str) + '_' + df1.columns
print(df1)

Out[304]:
   12_a_1  12_b_1  14_a_2  14_b_2
0       1       2       3       4
1       5       6       7       8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...