首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Pandas Dataframe中删除不包含数字和文字的行

从Pandas Dataframe中删除不包含数字和文字的行
EN

Stack Overflow用户
提问于 2017-12-09 18:55:24
回答 2查看 1.9K关注 0票数 0

我在Panda Dataframe中有一个名为'str‘的列。由于我打算从其中删除所有不包含数值0-9或文字a-z的行,因此以下语句不起作用:

代码语言:javascript
复制
data[data['str'].str.contains(r"[a-zA-z0-9]") == True]

在执行之后,我分析了列值。它仍然有这样的值:

("[[","^")

并删除值(在本例中这是不需要的):

("1","2016","20160715")

有没有人能帮我?

诚挚的问候

EN

回答 2

Stack Overflow用户

发布于 2017-12-09 19:00:52

您可以使用pandas dropna函数,它将删除包含任何空值的整行。

df=df.dropna()

其中df是您的数据帧

票数 0
EN

Stack Overflow用户

发布于 2017-12-09 21:14:35

代码语言:javascript
复制
import pandas as pd
data = pd.DataFrame([[']','//','.'],['a2','b2','c2'],['a3','b',']']],columns=['A','B','C'])
test = data['A']str.match('^[\w\d_-]*$')
data = data[test]

输出:

代码语言:javascript
复制
  A   B   C
1  a2  b2  c2
2  a3   b   ]

如果您可以使用非字母-非数字字符,我认为最好的方法是在字典中查找这些字符,然后使用data.replace。

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame([[']','//','.'],['a!','b2','c2'],['a3','b!',']']],columns=['A','B','C'])
df
Output:
 A   B   C
0   ]  //   .
1  a!  b2  c2
2  a3  b!   ]

remove = {'.':np.nan, '/':np.nan, ']':np.nan}  # The format is {'thing to be replaced':'new thing'}

df['A'] = df['A'].replace(remove) # Checks one column
df
Output:
    A    B   C
0  NaN  //   .
1   a!  b2  c2
2   a3  b!   ]

df.dropna()
df
Output:
  A   B   C
1  a!  b2  c2
2  a3  b!   ]

确保替换为您的特定列。dropna()将删除具有任何NaN值的所有列。

注意,不要使用Python方法(如"str“)作为占位符。不过,可能不会在这里烧死你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47727796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档