熊貓在兩列上連接表而不對值進行排序

馬蒂亞·蘇里奇奧

我想實現這裡描述的內容:stackoverflow question,但僅使用標準熊貓。

我有兩個數據框:Fist

  first_employee target_employee  relationship
0            Andy          Claude             0
1            Andy           Frida            20
2            Andy         Georgia           -10
3            Andy            Joan            30
4            Andy             Lee           -10
5            Andy           Pablo           -10
6            Andy         Vincent            20
7          Claude           Frida             0
8          Claude         Georgia            90
9          Claude            Joan             0
10         Claude             Lee             0
11         Claude           Pablo            10
12         Claude         Vincent             0
13          Frida         Georgia             0
14          Frida            Joan             0
15          Frida             Lee             0
16          Frida           Pablo            50
17          Frida         Vincent            60
18        Georgia            Joan             0
19        Georgia             Lee            10
20        Georgia           Pablo             0
21        Georgia         Vincent             0
22           Joan             Lee            70
23           Joan           Pablo             0
24           Joan         Vincent            10
25            Lee           Pablo             0
26            Lee         Vincent             0
27          Pablo         Vincent           -20

第二:

   first_employee target_employee  book_count
0         Vincent           Frida           2
1         Vincent           Pablo           1
2            Andy          Claude           1
3            Andy            Joan           1
4            Andy           Pablo           1
5            Andy             Lee           1
6            Andy           Frida           1
7            Andy         Georgia           1
8          Claude         Georgia           3
9            Joan             Lee           3
10          Pablo           Frida           2

我想加入兩個數據幀,以便我的最終數據幀與第一個數據幀相同,但它還有book_count具有相應值列(如果不可用,則為 NaN)。

我已經寫了類似的東西:joined_df = first_df.merge(second_df, on = ['first_employee', 'target_employee'], how = 'outer')我得到:

   first_employee target_employee  relationship  book_count
0            Andy          Claude           0.0         1.0
1            Andy           Frida          20.0         1.0
2            Andy         Georgia         -10.0         1.0
3            Andy            Joan          30.0         1.0
4            Andy             Lee         -10.0         1.0
5            Andy           Pablo         -10.0         1.0
6            Andy         Vincent          20.0         NaN
7          Claude           Frida           0.0         NaN
8          Claude         Georgia          90.0         3.0
9          Claude            Joan           0.0         NaN
10         Claude             Lee           0.0         NaN
11         Claude           Pablo          10.0         NaN
12         Claude         Vincent           0.0         NaN
13          Frida         Georgia           0.0         NaN
14          Frida            Joan           0.0         NaN
15          Frida             Lee           0.0         NaN
16          Frida           Pablo          50.0         NaN
17          Frida         Vincent          60.0         NaN
18        Georgia            Joan           0.0         NaN
19        Georgia             Lee          10.0         NaN
20        Georgia           Pablo           0.0         NaN
21        Georgia         Vincent           0.0         NaN
22           Joan             Lee          70.0         3.0
23           Joan           Pablo           0.0         NaN
24           Joan         Vincent          10.0         NaN
25            Lee           Pablo           0.0         NaN
26            Lee         Vincent           0.0         NaN
27          Pablo         Vincent         -20.0         NaN
28        Vincent           Frida           NaN         2.0
29        Vincent           Pablo           NaN         1.0
30          Pablo           Frida           NaN         2.0

它有點接近我想要實現的目標。但是, 中的值的順序first_employeetarget_employee它不相關,因此如果在我擁有的第一個數據幀(Frida,Vincent)和第二個數據幀(Vincent, Frida),這兩個應該合併在一起(重要的是值,而不是列順序)。

在我生成的數據框中,我得到了三行額外的行:

28        Vincent           Frida           NaN         2.0
29        Vincent           Pablo           NaN         1.0
30          Pablo           Frida           NaN         2.0

這是我合併的結果,它考慮了“有序”值按列進行連接:這 3 個額外的行應該合併到已經可用的對(Frida, Vincent) (Pablo, Vincent)(Frida, Pablo).

有沒有辦法只使用標準pandas函數來做到這一點(我在開頭引用的問題使用了sqldf

rhug123

我相信這就是你正在尋找的。使用np.sort將更改每行的前兩列的順序,使其按字母順序排列,從而允許合併正常工作。

cols = ['first_employee','target_employee']
df[cols] = np.sort(df[cols].to_numpy(),axis=1)
df2[cols] = np.sort(df2[cols].to_numpy(),axis=1)
ndf = pd.merge(df,df2,on = cols,how='left')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 MySQL 中使用 OR 避免對簡單連接進行全表掃描

如何連接三個沒有行不匹配的熊貓數據幀

取連續行直到特定值熊貓數據框

使用熊貓按條件對數據進行分組

將多行特定列連接成一行熊貓

Python:用熊貓中的句子對相似的單詞進行分組

如何在 JS 中按鍵對值進行分組和連接

在熊貓中按週對數據透視表日期進行分組

對來自熊貓數據框的連續值進行分組

同時對兩個數組進行排序

對熊貓數據框列進行分組和計數

使用熊貓進行多列分組以找到每組的最大值

使用分類字符串對熊貓數據框進行分組

如何在不同的列上執行熊貓地圖?

基於公共索引連接熊貓列值

按兩列的值對二維數組 JavaScript 進行排序

合併熊貓中的連續行並保留一些行不變

按兩列對熊貓數據框進行分組而不對其進行匯總

按列名按字母順序對熊貓數據框的列子集進行排序

熊貓:刪除兩列中具有相同索引的行中的重複值

如何對熊貓進行 VLOOKUP 但只獲得第一場比賽?

無法按索引對數據框進行排序。熊貓 df .value_counts()

Python 3:在不使用熊貓的情況下執行兩個列表列表的“左連接”

按兩列無序連接兩個熊貓數據框

在熊貓數據幀中跨兩行連接字符串

有什麼方法可以在 Python 的 df 中對每對具有相同名稱的列進行排序?熊貓相關

如何按數據透視表中的列對值進行排序

如何按兩個值而不是第二個值對成對向量進行排序?

按列索引而不是列名對熊貓數據框進行排序

TOP 榜单

热门标签

归档