gpt4 book ai didi

python - 如何删除仅包含某些值的行?

转载 作者:行者123 更新时间:2023-12-04 00:55:35 25 4
gpt4 key购买 nike

我有这样一个数据框

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

我想删除所有只包含 \n, \t, , \n 的行他们。

输出应该是这样的:

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

我尝试了以下方法:

  df = df[df.column_name != '\n'].reset_index(drop=True)
df = df[df.column_name != ''].reset_index(drop=True)
df = df[df.column_name != ' '].reset_index(drop=True)
df = df[df.column_name != ' '].reset_index(drop=True)
df = df[df.column_name != ' \n '].reset_index(drop=True)

但是否有更优雅的方式或 pythonic 方式来执行此操作而不是重复代码?

最佳答案

您可以使用 Series.str.strip并只比较空字符串:

df1 = df[df.column_name.str.strip() != ''].reset_index(drop=True)

或者将空值转换为 bool 值:

df1 = df[df.column_name.str.strip().astype(bool)].reset_index(drop=True)

或者过滤词,对我来说是必要的 strip (也许在真实数据中 strip 应该被删除):

df1 = df[df.column_name.str.strip().str.contains('\W', na=False)].reset_index(drop=True)

如果需要删除缺失值且没有字符串值,请将这些值替换为 NaN,然后使用 DataFrame.dropna :

df.column_name = df.column_name.replace(r'^\s*$', np.nan, regex=True)
df1 = df.dropna(subset=['column_name']).reset_index(drop=True)

关于python - 如何删除仅包含某些值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62749978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com