Добавить столбец из одного кадра данных Pandas в другой, когда оба индексации по-разному - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в питоне.У меня есть два кадра данных панд, которые проиндексированы по-разному.Я хочу скопировать столбец из одного в другой.Кадр данных 1: содержит идентификатор и класс, к которому принадлежит каждое изображение

      ID  index  class
0  10472  10472      0
1   7655   7655      0
2   6197   6197      0
3   9741   9741      0
4   9169   9169      0

Кадр данных 2: содержит идентификатор изображения в индексе и данные изображения в столбцах данных

                                                    data
index                                                   
5882   [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
360    [[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0...
1906   [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
3598   [[[255, 255, 255, 0], [232, 232, 247, 25], [34...
231    [[[255, 255, 255, 0], [234, 234, 234, 0], [57,...

Iхотите перебрать dataframe1 и подобрать идентификатор изображения, найти в dataframe 2 соответствующий идентификатор в индексе и скопировать столбец data в dataframe1.Как я могу это сделать (оптимальным способом)?

1 Ответ

0 голосов
/ 29 мая 2018

Во-первых, для данных совпадений нужны одинаковые типы, поэтому, если они различаются:

print (df1['index'].dtype)    
int64
print (df2.index.dtype)   
object

, есть 2 возможных решения - преобразовать индекс в целые числа:

df2.index = df2.index.astype(int)

Или столбец в строку:

df1['index'] = df1['index'].astype(str)

Затем используйте map по столбцу data в df2:

df1['data'] = df1['index'].map(df2['data']) 

Или, если необходимо, добавьте несколько столбцов изdf2 (например, в реальных данных) использовать join:

df1 = df1.join(df2, on=['index'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...