2016-04-04 31 views
5

başka dataframe değerleri ile bir dataframe sütun değerleri yerine, ilk 1000 satır vardır ve aşağıdaki gibidir:iki dataframes sahip

Date   Group   Family  Bonus 
2011-06-09  tri23_1  Laavin  456 
2011-07-09  hsgç_T2  Grendy  679 
2011-09-10  bbbj-1Y_jn Fantol  431 
2011-11-02  hsgç_T2  Gondow  569 

Group farklı değerlere sahip kolon, bazen ama yaklaşık genel olarak, tekrar 50 benzersiz değer.

Group    Hotel 
tri23_1   Jamel 
hsgç_T2   Frank 
bbbj-1Y_jn  Luxy 
mlkl_781   Grand Hotel 
vchs_94   Vancouver 

Amacım ilk sütunda Group değeri değiştirmektir:

ikinci dataframe ayrıca tüm bu 50 benzersiz değerleri (50 satırlar) ve bu değerlere ilişkili oteller, içerdiği ikinci veri çerçevesinin Hotel sütununa karşılık gelen değerlere göre veri taşıyın/veya ilgili değerlerle birlikte Hotel sütununu oluşturun. Ben

df1.loc[(df1.Group=df2.Group), 'Hotel']=df2.Hotel 

gibi sadece atama yoluyla bunu yapmak çalıştığınızda sana 'Grup' olarak endeksini ayarlarsanız karşılaştırma

cevap

9

mümkün değildir bu yüzden dataframes, eşit büyüklükte olmadığı bir hata var diğer sütun daha sonra df orijinal df üzerinde map kullanarak değiştirebilirsiniz 'Grubu' sütun:

In [36]: 
df['Group'] = df['Group'].map(df1.set_index('Group')['Hotel']) 
df 

Out[36]: 
     Date Group Family Bonus 
0 2011-06-09 Jamel Laavin 456 
1 2011-07-09 Frank Grendy 679 
2 2011-09-10 Luxy Fantol 431 
3 2011-11-02 Frank Gondow 569 
+0

, hata mesajı, neden bir fikrin olsun? InvalidIndexError: Reindexing yalnızca benzersiz değerli Index nesnelerle geçerlidir – mkheifetz

+1

Sütununuzdaki benzersiz değerlere sahip değilseniz, dizini – EdChum

+0

hmmm olarak ayarlayamazsınız, bu yüzden, hepsini istediğim büyük bir veri çerçevem ​​varsa ne yapmalıyım? Başka bir veri çerçevesindeki bir sütundaki değerlere karşılık gelen değerleri almak için sütunlar (sütunlar daha önce belirttiğiniz gibi benzersiz değildir)? – mkheifetz

0

Ayrıca, geçerli bir sözlük oluşturmak ve kullanabilirsiniz:

hotel_dict = df2.set_index('Group').to_dict() 
df1['Group'] = df1['Group'].apply(lambda x: hotel_dict[x]) 
İlgili konular