2016-07-01 73 views
2

我有兩個數據框,它們的列數相同,並且包含文本數據。問題是,在第二個數據幀中的數據丟失細節:設置Pandas數據框中某一行的值等於另一個數據框中某一行的值

A  B 
1 Bob Hoskins 
2 Laura Hogan 
3 Tom Jones 

    A  B 
1 Bob  x 
2 Bob  x 
3 Bob  x 
4 Laura x 
5 Laura x 
6 Tom  x 

什麼是熊貓最快的方式設置「B」列的值在第二個數據幀等於其各自的條件值第一?那麼'A'='Bob'將有'B'的行會被設置爲Hoskins,Laura還是Hogan等?第二個數據幀也很大,有100,000行,因此快速解決方案是首選。

+0

是值實際上'x'並被解釋爲失蹤? – piRSquared

+0

這只是一個佔位符字符串,我用於示例,只是假設其設置爲'x' – GreenGodot

回答

3

在第二DF執行左join

output = df2.merge(df1, how = "left", on = "A") 

*所需DF:*

 A  B 
0 Bob Hoskins 
1 Bob Hoskins 
2 Bob Hoskins 
3 Laura Hogan 
4 Laura Hogan 
5 Tom Jones 
+0

@GreenGodot讓我知道如果這不適合你。 –

+0

嗨,這種方法的一個問題是,我已經添加了一個或兩個額外的列到數據框架。這些只是三個不相關的列,它們在兩個數據框中的相應行都具有相同的值。當我運行你的代碼時,我得到這些列重複兩次(_x和__附加到他們的名字)。之後有沒有辦法避免修剪數據框? – GreenGodot

2

可以設置A作爲索引用於第一數據幀,然後篩選基於行上的指數:

df.set_index('A').loc[df1.A].reset_index() 

#  A   B 
# 0 Bob Hoskins 
# 1 Bob Hoskins 
# 2 Bob Hoskins 
# 3 Laura  Hogan 
# 4 Laura  Hogan 
# 5 Tom  Jones 
相關問題