2013-06-17 52 views
5

Xem xét DataFrame X sau:Pandas DataFrame giá trị cập nhật Cột với DataFrame khác

Col A Col B 
1  2 
3  4 
5  6 

Và DataFrame Y:

Col A Col B 
3  7 
8  9 

Liệu có tồn tại một xây dựng trong chức năng trong gấu trúc mà sẽ Kết hợp hai dataframes, sử dụng Col A làm khóa và cập nhật giá trị trong Col B nếu nó tồn tại, nếu không nối thêm. Như vậy mà sản lượng của chức năng này trên X và Y là

Col A Col B 
1  2 
3  7 
5  6 
8  9 

Tôi đã nhìn vào hợp nhất và cập nhật và thêm nhưng họ dường như không hành động theo cách tôi muốn, cập nhật thông tin cập nhật bởi chỉ số thay vì Col Một giá trị, hợp nhất không ghi đè, vv. Cảm ơn!

Trả lời

3

Một cách để làm điều này là để concat sau đó drop the duplicates:

In [11]: df = pd.concat([dfX, dfY]) 

In [12]: df 
Out[12]: 
    ColA ColB 
0  1  2 
1  3  4 
2  5  6 
0  3  7 
1  8  9 

In [13]: df.drop_duplicates(cols=['ColA'], take_last=True) 
Out[13]: 
    ColA ColB 
0  1  2 
2  5  6 
0  3  7 
1  8  9 

Lưu ý: đối số take_last có nghĩa là bạn đang "cập nhật từ dfY".

+0

Lưu ý 2: Thú vị trong câu trả lời của ubutbu (đã xóa), ông sử dụng 'combine_first' (nhưng thấy nó chậm gấp hai lần so với phương pháp này). –

+0

aha drop_duplicates, không biết về điều đó, cảm ơn! – TheoretiCAL

Các vấn đề liên quan