2
我有一個數據框。我想根據2列之間的比較來切片。例如在下面的例子中,我想提取行,其中列x
比y
柱大:需要布爾切片幫助
d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]})
d[d[:"x"]>d[:"y"]]
這樣我得到一個錯誤:
"unhashable type: 'slice'"
我有一個數據框。我想根據2列之間的比較來切片。例如在下面的例子中,我想提取行,其中列x
比y
柱大:需要布爾切片幫助
d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]})
d[d[:"x"]>d[:"y"]]
這樣我得到一個錯誤:
"unhashable type: 'slice'"
你需要省略:
和使用boolean indexing
:
d[d["x"]>d["y"]]
樣品(改最後一個值):
d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 3]})
print (d)
x y
0 1 4
1 2 5
2 3 6
3 4 7
4 5 3
print (d["x"]>d["y"])
0 False
1 False
2 False
3 False
4 True
dtype: bool
print (d[d["x"]>d["y"]])
x y
4 5 3
謝謝。你的答案在上面的例子中有效,但在另一種情況下仍然沒有: 想象一下,我有一個包含2列A和B的數據框。它們包含字符串。我想提取A中包含字符串B的那些行。我在d [「B」]中使用d [d [「A」]],但現在出現如下錯誤:'Series'對象是可變的,因此它們不能被散列 – user3623123
謝謝jezrael。命令d [d [「x」]。isin(d [「y」])])d0es不會給我一個錯誤。這是一個改進! :-)但仍然不能解決我的問題。我有行是列X是,說「abc」,列Y是「xxxabcxxx」胸圍上面的命令不會提取它。爲什麼? – user3623123
是的,所以需要'd = pd.DataFrame({'A':['abc','d','r t','rr','tt'],'B':['xxxabcxxx',' (d)'然後'print(d [d.apply(lambda x:xA in xB,axis = 1)]) – jezrael