Python 如何删除仅包含特定值的行?

Python 如何删除仅包含特定值的行?,python,pandas,dataframe,rows,delete-row,Python,Pandas,Dataframe,Rows,Delete Row,我有一个这样的数据帧 列名称 0部OnePlus手机从未辜负过我的期望。 1接收时间早于本地集的预期时间。 2\n 3好 4一定要买! 5\t 6. 7真棒的产品! 8\n 我要删除其中仅包含\n,\t,,\n的所有行 输出应如下所示: 列名称 0部OnePlus手机从未辜负过我的期望。 1接收时间早于本地集的预期时间。 2好 3一定要买! 4真棒的产品! 我尝试了以下方法: df=df[df.column\u name!='\n']。重置索引(drop=True) df=df[df.col

我有一个这样的数据帧

列名称
0部OnePlus手机从未辜负过我的期望。
1接收时间早于本地集的预期时间。
2\n
3好
4一定要买!
5\t
6.
7真棒的产品!
8\n
我要删除其中仅包含
\n
\t
\n
的所有行

输出应如下所示:

列名称
0部OnePlus手机从未辜负过我的期望。
1接收时间早于本地集的预期时间。
2好
3一定要买!
4真棒的产品!
我尝试了以下方法:

df=df[df.column\u name!='\n']。重置索引(drop=True)
df=df[df.column\u name!='')。重置索引(drop=True)
df=df[df.column\u name!='')。重置索引(drop=True)
df=df[df.column\u name!='')。重置索引(drop=True)
df=df[df.column\u name!='\n'].重置索引(drop=True)
但是,有没有一种更优雅的方法或一种类似于python的方法来代替重复代码呢?

您可以只使用和比较空字符串:

df1 = df[df.column_name.str.strip() != ''].reset_index(drop=True)
或将空值转换为布尔值:

df1 = df[df.column_name.str.strip().astype(bool)].reset_index(drop=True)
或者过滤词,对我来说是必要的
strip
(可能在真实数据中
strip
应该删除):

如果需要删除缺失值和无字符串值,请将这些值替换为
NaN
s,然后使用:


另一种方法是删除条目与标记元素匹配的行:

df = df[~df['column_name'].isin(['\\n','\\t'])].dropna()
如果最后一行(或其他行)中有多余的空格,您可以首先执行以下操作:

df['column_name'] = df['column_name'].str.strip()
用于检查正斜杠后是否有任何小alpha

df[df.Column Name.str.contains('[\\][a-z]+',case=True, na=False, regex=True)]
在您的情况下,数据:

print(pd.DataFrame({'A':['OnePlus phones never fail to meet my expectatiion','received earlier than expected for local set.','\n','good','\t', np.nan,'must buy!','','awesome product!','\n' ]}))

                                               A
0  OnePlus phones never fail to meet my expectatiion
1      received earlier than expected for local set.
2                                                 \n
3                                               good
4                                                 \t
5                                                NaN
6                                          must buy!
7                                                   
8                                   awesome product!
9                                                 \n
解决方案

print(df[df.A.str.contains('[\\][a-z]+',case=True, na=False, regex=True)])



                             A
0  OnePlus phones never fail to meet my expectatiion
1      received earlier than expected for local set.
3                                               good
6                                          must buy!
8                                   awesome product!

非常感谢。最后一个更一般,这很有帮助!
print(pd.DataFrame({'A':['OnePlus phones never fail to meet my expectatiion','received earlier than expected for local set.','\n','good','\t', np.nan,'must buy!','','awesome product!','\n' ]}))

                                               A
0  OnePlus phones never fail to meet my expectatiion
1      received earlier than expected for local set.
2                                                 \n
3                                               good
4                                                 \t
5                                                NaN
6                                          must buy!
7                                                   
8                                   awesome product!
9                                                 \n
print(df[df.A.str.contains('[\\][a-z]+',case=True, na=False, regex=True)])



                             A
0  OnePlus phones never fail to meet my expectatiion
1      received earlier than expected for local set.
3                                               good
6                                          must buy!
8                                   awesome product!