Объединить столбцы данных и строку в конкретный индекс на основе значения другого столбца данных - PullRequest
1 голос
/ 19 марта 2019

Извините Если заголовок не достаточно ясен, я объясню лучше на примере:

dataframe1 = pd.DataFrame(columns=['UniqueNum', 'B' ,'A'])
dataframe1['UniqueNum'] = ['1a','2b', '3c']
dataframe1['A'] = ['2','6', '7']
dataframe1['B'] = ['3','88', '23']
print dataframe1
dataframe2 = pd.DataFrame(columns=['TestId', 'C' ,'D'])
dataframe2['TestId'] = ['1a','2b', '3c', '1a', '3c', '2b']
dataframe2['C'] = ['22','46', '47','22','46', '47']
dataframe2['D'] = ['13','88', '233','22','46', '47']
print dataframe2

print is:

>>> 
  UniqueNum   B  A
0        1a   3  2
1        2b  88  6
2        3c  23  7
  TestId   C    D
0     1a  22   13
1     2b  46   88
2     3c  47  233
3     1a  22   22
4     3c  46   46
5     2b  47   47
>>> 

Я хочу объединить выводdataframe будет выглядеть так:

      TestId   C    D   B  A
0     1a       22   13   3  2
1     2b       46   88  88  6
2     3c       47  233  23  7
3     1a       22   22   3  2
4     3c       46   46  23  7
5     2b       47   47  88  6

Значение для добавления к dataframe2 столбцы со значениями соответствуют совпадению между UniqueNum в dataframe1 и TestId в dataframe2.Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Вы можете использовать DataFrame.merge с левым соединением и rename столбцы:

d = {'UniqueNum':'TestId'}
df = dataframe2.merge(dataframe1.rename(columns=d), how='left', on='TestId')

Или вместо этого создайте индекс rename и измените параметры для left_on и right_index:

df = dataframe2.merge(dataframe1.set_index('UniqueNum'), 
                      how='left', 
                      left_on='TestId', 
                      right_index=True)

Или указаны оба столбца и последний удалить UniqueNum столбец:

df = dataframe2.merge(dataframe1, 
                      how='left', 
                      left_on='TestId', 
                      right_on='UniqueNum').drop('UniqueNum', axis=1)

print (df)

  TestId   C    D   B  A
0     1a  22   13   3  2
1     2b  46   88  88  6
2     3c  47  233  23  7
3     1a  22   22   3  2
4     3c  46   46  23  7
5     2b  47   47  88  6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...