Tôi có 2 khung dữ liệu, một trong số đó có thông tin bổ sung cho một số (nhưng không phải tất cả) của các hàng trong cột kia.gấu trúc hợp nhất khung dữ liệu điền vào các giá trị bị thiếu
names = df({'names':['bob','frank','james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank'],
'classification':['thief','thief','good','thief']})
Tôi muốn để có những cột phân loại từ info
dataframe ở trên và thêm nó vào names
dataframe trên. Tuy nhiên, khi tôi làm combined = pd.merge(names, info)
, khung dữ liệu kết quả chỉ dài 4 hàng. Tất cả các hàng không có thông tin bổ sung đều bị loại bỏ.
Lý tưởng nhất, tôi sẽ có các giá trị trong các cột bị thiếu được đặt thành không xác định. Kết quả trong một khung dữ liệu nơi một số người là các chủ đề, một số là tốt, và phần còn lại là không rõ.
EDIT: Một trong những câu trả lời đầu tiên tôi nhận được đề xuất bằng cách sử dụng tính năng kết hợp hợp nhất dường như làm một số điều kỳ lạ. Đây là mẫu mã:
names = df({'names':['bob','frank','bob','bob','bob''james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','dev','dev','dev''sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank','joe','bill'],
'classification':['thief','thief','good','thief','good','thief']})
what = pd.merge(names, info, how="outer")
what.fillna("unknown")
Điều kỳ lạ là ở đầu ra, tôi sẽ có hàng có tên kết quả là "bobjames" và một vị trí khác là "devsys". Cuối cùng, mặc dù hóa đơn không xuất hiện trong dataframe tên mà nó hiển thị trong khung dữ liệu kết quả. Vì vậy, tôi thực sự cần một cách để nói tra cứu một giá trị trong dataframe khác này và nếu bạn tìm thấy một cái gì đó tack trên những cột.
bạn có muốn 'kết hợp = pd.merge (tên, thông tin, làm thế nào = 'bên ngoài') '? – EdChum
Bạn phải gán kết quả của 'fillna' hoặc pass param' inplace = True' để 'what = what.fillna ('unknown')' hoặc 'what.fillna ('unknown', inplace = True)' – EdChum
'bobjames 'và' devsys 'là do thiếu dấu phẩy trong dữ liệu đầu vào của bạn (có thể là lỗi đánh máy). 'hóa đơn' xuất hiện vì bạn đang sử dụng kết hợp bên ngoài. Sử dụng how = 'left' nếu bạn chỉ muốn các giá trị từ các tên có các giá trị tùy chọn từ thông tin. –