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

側向堆疊

我需要獲取 Pandas 數據框中包含值 == 1 的所有區域的單元格引用(row#、col#)。

import pandas as pd
import numpy as np

df = pd.DataFrame({'x': [np.nan, 1, np.nan, np.nan, 1],
                   'y': [np.nan, np.nan, np.nan, np.nan, 1],
                   'z': [1, np.nan, 1, np.nan, np.nan]})

希望獲得包含兩列的最終數據框: row & col 看起來像:

  row  col
0  1    1
1  4    1
2  4    2
3  0    3
4  2    3
瑪雅克·波瓦爾

您可以使用numpy.argwhere.

這應該比使用for循環df.stack等的所有解決方案快得多。請參閱下面的時間

In [145]: import numpy as np

In [146]: res = pd.DataFrame(np.argwhere(df.notnull().values).tolist(), columns=['row', 'col'])

In [147]: res.col = res.col + 1

In [148]: res
Out[148]: 
   row  col
0    0    3
1    1    1
2    2    3
3    4    1
4    4    2

時間:

np.argwhere

In [149]: %timeit pd.DataFrame(np.argwhere(df.notnull().values).tolist(), columns=['row', 'col'])
437 µs ± 4.71 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

@sophocles 解決方案使用df.stack

In [151]: %timeit pd.DataFrame(df[df.notna()].stack().index.tolist(),columns=['row','col'])
1.33 ms ± 5.55 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根據pandas中的列值(國家/地區)過濾數據框

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

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

根據單元格信息轉換pandas DataFrame

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

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

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

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

嘗試根據過濾器刪除 Pandas 數據框中的行時出現關鍵錯誤

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

Pandas 通過子串匹配過濾數據框列

根據條件在 Pandas 數據框中創建重複行,並更改特定列的值

Python Pandas 根據列值過濾行返回 NaN

如何使用字典為 Pandas 數據框指定過濾條件

如何根據表格數據中的文本框值過濾數據?

Pandas:根據不同組中另一列的值過濾行(合計兩列)

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

根據單擊複選框過濾數據

根據列的值將 Pandas 數據幀拆分為多個數據幀

如何根據具有特定單元格值的行來構建熊貓數據框,直到下一個值發生變化?

Pandas 數據框 - 根據 groupby 計數結果設置布爾列

如何根據字典鍵和值過濾熊貓數據框行?

Pandas - 如何根據條件正確合併兩個數據框?

如何根據列中的空單元格合併數據框行

Pandas 計算過濾數據集的時間增量

在 Pandas 數據透視表上應用多個過濾器

基於 groupby 的過濾器拆分 Pandas 數據幀

在多索引數據幀中的 Pandas loc 中捕獲過濾器異常

希望根據另一個數據框過濾數據框