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!