如何删除 pandas 中包含特定字符串的任何行?
How to delete ANY row containing specific string in pandas?
我知道有很多方法可以删除 python 中列中包含特定值的行,但我想知道是否有更有效的方法通过检查列中的所有列来执行此操作立即删除数据集并删除所有包含特定值的行,而不将其转换为 NaN 并删除所有行。澄清一下,我不想丢失所有带有 strings/NaN 的列,我只想丢失具有特定值的行。
例如,我希望删除参与者在任何列中包含“拒绝”答案的所有行。所以如果我的 table 看起来像这样:
Subject
Race
Gender
Weight
1
black
female
123
2
white
refused
145
3
white
male
165
4
asian
male
refused
5
refused
male
128
6
white
male
nan
7
asian
male
refused
8
black
male
nan
我想实现一个语句来过滤它,只保留没有任何响应的主题,字符串包含“拒绝”:
Subject
Race
Gender
Weight
1
black
female
123
3
white
male
165
6
white
male
nan
8
black
male
nan
有谁知道如何以这种方式过滤整个数据集?
df = df[(df.Gender != 'refused') & (df.Race != 'refused').... ]
或者
filter = reduce(lambda column1, column2: (df[column1] != 'refused') & (df[column2] != 'refused'), df.columns)
df = df[filter]
另一种应用 lambda 的方法:
df = df.loc[~df.apply(lambda row : any('refused' in str(cell) for cell in row) ,axis=1)]
您可以将 isin
与 any
一起使用。
df = df[~df.isin(['refused']).any(axis=1)]
我知道有很多方法可以删除 python 中列中包含特定值的行,但我想知道是否有更有效的方法通过检查列中的所有列来执行此操作立即删除数据集并删除所有包含特定值的行,而不将其转换为 NaN 并删除所有行。澄清一下,我不想丢失所有带有 strings/NaN 的列,我只想丢失具有特定值的行。
例如,我希望删除参与者在任何列中包含“拒绝”答案的所有行。所以如果我的 table 看起来像这样:
Subject | Race | Gender | Weight |
---|---|---|---|
1 | black | female | 123 |
2 | white | refused | 145 |
3 | white | male | 165 |
4 | asian | male | refused |
5 | refused | male | 128 |
6 | white | male | nan |
7 | asian | male | refused |
8 | black | male | nan |
我想实现一个语句来过滤它,只保留没有任何响应的主题,字符串包含“拒绝”:
Subject | Race | Gender | Weight |
---|---|---|---|
1 | black | female | 123 |
3 | white | male | 165 |
6 | white | male | nan |
8 | black | male | nan |
有谁知道如何以这种方式过滤整个数据集?
df = df[(df.Gender != 'refused') & (df.Race != 'refused').... ]
或者
filter = reduce(lambda column1, column2: (df[column1] != 'refused') & (df[column2] != 'refused'), df.columns)
df = df[filter]
另一种应用 lambda 的方法:
df = df.loc[~df.apply(lambda row : any('refused' in str(cell) for cell in row) ,axis=1)]
您可以将 isin
与 any
一起使用。
df = df[~df.isin(['refused']).any(axis=1)]