我有一個 500 行的資料框,排序如下:
Col1 Val1
asd 0.27
pqer 0.37
psdf 0.54
我正在嘗試將 的每個值Col1與Col1更高的另一行配對Val1以獲得以下串列:
[['asd', 'pqer'], ['asd','psdf'],['pqer','psdf']]
我不知道該怎么做。
uj5u.com熱心網友回復:
嘗試自我合并和過濾:
df.merge(df, how='cross')\
.query('Val1_x < Val1_y')[['Col1_x','Col1_y']]\
.to_numpy().tolist()
輸出:
[['asd', 'pqer'], ['asd', 'psdf'], ['pqer', 'psdf']]
uj5u.com熱心網友回復:
二分搜索可能比笛卡爾連接更有效(取決于資料大小);conditional_join從pyjanitor可以在這方面幫助:
# pip install pyjanitor
import pandas as pd
import janitor
(df.conditional_join(df, ('Val1', 'Val1', '<'))
.loc(axis=1)[:, 'Col1']
.to_numpy()
.tolist()
)
[['asd', 'pqer'], ['asd', 'psdf'], ['pqer', 'psdf']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369010.html
標籤:熊猫 数据框 python-3.8
上一篇:熊貓減去與下一行值相同的行值
