Yol*_*ken 9 python boolean dataframe pandas
我认为这是一个简单的解决方案,我不确定我缺少什么.我有这样一个数据框:
index c1 c2 c3
2015-03-07 01:27:05 False False True
2015-03-07 01:27:10 False False True
2015-03-07 01:27:15 False False False
2015-03-07 01:27:20 False False True
2015-03-07 01:27:25 False False False
2015-03-07 01:27:30 False False True
Run Code Online (Sandbox Code Playgroud)
我想删除包含任何行,False在c3.c3是一个dtype=bool.我一直遇到问题,因为它是一个布尔值而不是字符串/ int/etc,我之前没有处理过.
谢谢你的帮助!
ASG*_*SGM 27
熊猫以非常简洁明了的方式处理布尔值:
df = df[df.c3]
Run Code Online (Sandbox Code Playgroud)
当您使用过滤数据帧时df[...],通常会编写一些返回布尔值的函数(如df.x > 2).但是在这种情况下,由于列已经是一个布尔值,你可以df.c3自己放入,这将获得所有的行True.
如果你想得到相反的结果(正如你暗示的问题的原始标题),你可以使用df[~df.c3],~反转布尔值.
有关Pandas中布尔索引的更多信息,请参阅文档.
问题的标题和问题本身恰恰相反,但是:
df = df[df['c3'] == True] # df will have only rows with True in c3
Run Code Online (Sandbox Code Playgroud)
df.drop(df[df['c3'] == False].index, inplace=True)
Run Code Online (Sandbox Code Playgroud)
这明确地滴行,其中'c3'的False不只是保持行评估为True
考虑DataFrame.query。这允许链式操作,从而避免通过变量名称引用数据帧。
filtered_df = df.query('my_col')
Run Code Online (Sandbox Code Playgroud)
这应该返回my_col计算结果为 true 的行。要反转结果,请使用query('~my_col')。
要就地执行此操作:
df.query('my_col', inplace=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24083 次 |
| 最近记录: |