我正在嘗試過濾保存在 csv 檔案中的資料框。資料框如下:示例資料框
A B C
x 3 ['a',1,2,'b']
y 2 ['c',4,6,'b']
z 1 ['d',5,7,'e']
上面的資料框包含三列,但第三列 C 列出了一個值。我知道我可以使用一個事實,df.query('A == x')它會列印出包含“x”值的行。但是我怎樣才能對列 C 做同樣的事情。假設我想從列 C 中列印不包含“b”的行。基本上它應該列印
z 1 ['d',5,7,'e'].
uj5u.com熱心網友回復:
您應該能夠使用應用功能
df[df['C'].apply(lambda x: 'b' not in x)]
編輯:如果您想過濾任何包含“b”或 3 的行,您可以執行以下操作:
df[df['C'].apply(lambda x: np.all(['b' not in x, 3 not in x]))]
同樣,如果您想過濾掉同時包含 'b' 和 3 的行(但只允許 'b' 或 3),您可以將上面的內容更改為 np.any 而不是 np.all
uj5u.com熱心網友回復:
要過濾掉包含“b”作為第三項的行:
out = df[df['C'].str[2].ne('b')]
對于任何專案:
out = df[["b" not in l for l in df['C']]]
要洗掉同時匹配“a”和“b”的行:
out = df[[{'a', 'b'}.issubset(l) for l in df['C']]
對于“a”或“b”:
out = df[[not {'a', 'b'}.isdisjoint(l) for l in df['C']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518163.html
