首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想删除某一列的结果为“未知”的所有行。

我想删除某一列的结果为“未知”的所有行。
EN

Stack Overflow用户
提问于 2017-05-27 07:09:15
回答 2查看 1.1K关注 0票数 1

我是编程和Python3/Pandas的新手。

我已经写了一个csv文件到一个dF,并且正在使用pandas和numpty。dF包含一系列列,A、B、C等,以及它们的数千行数据(不全是数字的)。我想从数据框中删除“未知”的所有实例。

我试过了:

dF = dF[dF'A‘!=’未知‘]

但它给了我一条错误消息。

EN

回答 2

Stack Overflow用户

发布于 2017-05-27 12:37:10

您需要按boolean indexing过滤数据

代码语言:javascript
复制
df = pd.DataFrame({'A':['a','unknown','b'],
                   'B':pd.date_range('2017-01-01', periods=3),
                   'C':[7,8,9],
                   'D':[1,3,5]})
print (df)
         A          B  C  D
0        a 2017-01-01  7  1
1  unknown 2017-01-02  8  3
2        b 2017-01-03  9  5

代码语言:javascript
复制
df1 = df[(df['A'] != 'unknown') & (df['B'] > '2017-01-02')]
print (df1)
   A          B  C  D
2  b 2017-01-03  9  5

但是如果以后需要处理数据:

代码语言:javascript
复制
df1['C'] = df1['C'] + 1
print (df1)

正在尝试对DataFrame中切片的副本设置一个值。尝试使用值,col_indexer = .locrow_indexer

问题是,如果您稍后修改了df1中的值,您会发现修改不会传播回原始数据(df),并且Pandas会发出警告。

解决方案是copy

代码语言:javascript
复制
df1 = df[(df['A'] != 'unknown') & (df['B'] > '2017-01-02')].copy()
print (df1)
   A          B  C  D
2  b 2017-01-03  9  5

df1['C'] = df1['C'] + 1
print (df1)
   A          B  C  D
2  b 2017-01-03 10  5
票数 2
EN

Stack Overflow用户

发布于 2017-05-27 07:13:03

你是说这个?

代码语言:javascript
复制
df = df[df['A'] != 'unknown']

或者,您可以使用query()

代码语言:javascript
复制
df = df.query('A != "unknown"')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44211248

复制
相关文章

相似问题

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