相当于grep的熊猫

Loo*_*ast 6 python grep dataframe pandas

我是熊猫的新来者,对于像这样的数据框:

N  Chem    Val
A  Sodium  9
B  Sodium  10
A  Chlorid 7
B  Chlorid 10
A  Sodium  17
Run Code Online (Sandbox Code Playgroud)

我想像grep在bash中一样选择包含'A'在第一列和'Sodium'第三列中的行:

A  Sodium  9
A  Sodium  17
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?我想我需要使用df[].str.contains()?谢谢

Jam*_*mes 5

您可以.str.contains()在数据框的列上使用以返回布尔值Series。您还可以对多个系列执行逻辑andor运算。最后,将逻辑系列作为键传递给数据框将仅返回正确的值。

bool1 = df.N.str.contains('A')          # True for rows of N == 'A'
bool2 = df.Chem.str.contains('Sodium')  # True for rows of Chem == 'Sodium'
df[bool1 & bool2]   # selects rows where N=='A' AND Chem=='Sodium'

returns (without including the index):
N  Chem    Val
A  Sodium  9
A  Sodium  17
Run Code Online (Sandbox Code Playgroud)