pandas 數據框迭代作為列表的單元格值並將每個元素與其他單元格進行比較

奧庫布

我有一個包含 2 列的數據框 - 一個元組和一個列表:

df = t        l
    (1,2) [1,2,3,4,5,6]
    (0,5) [1,4,9]
    (0,4) [9,11]

我想添加一個新列“l 中有多少元素在 t 的範圍內。例如,這裡 if 將是:

df =counter  t       l
      2    (1,2) [1,2,3,4,5,6]
      2    (0,5) [1,4,9]
      0    (0,4) [9,11]

這樣做的最佳方法是什麼?

耶斯列

使用帶有生成器和的列表理解sum

df['counter'] = [sum(a <= i <= b for i in y) for (a, b), y in df[['t','l']].to_numpy()]

一個更快的解決方案set.intersection是:

df['counter'] = [len(set(range(a, b+1)).intersection(y)) 
                 for (a, b), y in df[['t','l']].to_numpy()]

print (df)
        t                   l  counter
0  (1, 2)  [1, 2, 3, 4, 5, 6]        2
1  (0, 5)           [1, 4, 9]        2
2  (0, 4)             [9, 11]        0

性能測試數據:

#30k rows
df = pd.concat([df] * 10000, ignore_index=True)

In [67]: %timeit [sum(a <= i <= b for i in y) for (a, b), y in df[['t','l']].to_numpy()]
65.3 ms ± 1.22 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [68]: %timeit [len(set(range(a, b+1)).intersection(y)) for (a, b), y in df[['t','l']].to_numpy()]
60.7 ms ± 520 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

將單元格拆分為多行並在 Pandas 中進行分組計數

如何將 Pandas 中的數據框列作為單元格列表插入到另一個數據框中?

pandas - 取消嵌套列表並在 csv 中以列為單位顯示單元格中的每個數組值

使用 Pandas 將兩個獨立單元格中的值轉換為一個單元格

使用 Pandas 數據框將一列值與另一列中的其他元素列表進行比較

為什麼 Pandas ExcelWriter 會截斷數據框的單元格內容?

pandas 數據框的單元格引用,根據特定值過濾

將多個excel電子表格中的特定單元格讀取到單個pandas數據框中

在 Pandas DataFrame 中,當每個單元格都是一個數組時,對每個子數組進行排序

將一行中的每個值與 Pandas 數據框中的其他行配對

如果其中一個單元格包含所有大寫字符串的列表,則從 Pandas 數據框中刪除行

如何在 Pandas 中將兩個單獨的單元格合併為一個奇異的組合值

將值插入到單元格中,結果為 Pandas

如何製作 Pandas DataFrame 的簡單等高線圖,其中數字單元格值為 Z,行/列標記為 X 和 Y 坐標?

如何在通過 Pandas 在 csv 中寫入多個 for 循環數據時在單個單元格中附加數據?

如何使用 Pandas 在 Python 中基於同一行中的另一個單元格設置單元格值

根據單元格信息轉換pandas DataFrame

Python & Pandas:將多行組合成一個單元格

將單元格與同一列中的前一個單元格進行比較 - VBA

根據 value_counts() 條件更改 Pandas 單元格中的值

Pandas DataFrame 將單元格顯示為字符串,但在我嘗試拆分單元格時返回錯誤

按列值子集 R 數據框並將匹配特定值的單元格更改為新值

Pandas df 函數來查找和替換沒有值的單元格

如何根據網頁抓取的輸出創建帶有空白單元格的 Pandas 數據框?

R:如何將每個單元格值(數據框)除以包含相應行和列總數的數量

如何從 3 個元素元組列表創建 Pandas 數據框?

MATLAB - 將值轉換為單元格數組,其中單個單元格元素的大小不等

將單元格區域作為變量傳遞並使用函數複製數據

Excel 數據透視表:如果單元格為空,請使用其他單元格