繁体   English   中英

用熊猫过滤数据

[英]Filtering data with pandas

我是Pandas的新手,我正尝试将其应用到已经编写的脚本中。 我有一个csv文件,可从中提取数据,并在数据帧中使用“ 候选 ”,“ 最终轨道 ”和“ 状态 ”列。

我的问题是,我想使用韦斯·麦金尼(Wes Mckinney)的10分钟教程(' http://nbviewer.ipython.org/urls/gist.github.com/wesm/4757075/raw/a72d3450ad4924d0e74fb57c9f62d1d895ea4574/ PandasTour.ipynb ')。 In [80]:他使用aapl_bars.close_price['2009-10-15']

我想使用类似的方法来选择所有带有*作为状态的数据。 如果该行中没有*,则来自其他列的数据也将被删除。

我目前的代码

def establish_current_tacks(filename):

    df=pd.read_csv(filename)    
    cols=[df.iloc[:,0], df.iloc[:,10], df.iloc[:,11]]
    current_tracks=pd.concat(cols, axis=1)
    return current_tracks

我的数据

>>> current_tracks
<class 'pandas.core.frame.DataFrame'>
Int64Index: 707 entries, 0 to 706
Data columns (total 3 columns):
candidate       695  non-null values
 final track    670  non-null values
 status         670  non-null values
dtypes: float64(1), object(2)

我想使用诸如current_tracks.status['*'] ,但这不起作用

道歉,如果这很明显,那么我要努力使自己摆脱困境。

由于要过滤的数据不是数据框索引的一部分,而是常规列,因此您需要执行以下操作:

current_tracks[current_tracks.status == '*']

完整示例:

import pandas as pd
current_tracks = pd.DataFrame({'candidate': ['Bob', 'Jim', 'Alice'],
'final_track': [10, 15, 13], 'status': ['*', '.', '*']})
current_tracks
Out[3]: 
  candidate  final_track status
0       Bob           10      *
1       Jim           15      .
2     Alice           13      *

current_tracks[current_tracks.status == '*']
Out[4]: 
  candidate  final_track status
0       Bob           10      *
2     Alice           13      *

如果status是数据框索引的一部分,则原始语法将起作用:

current_tracks = current_tracks.set_index('status')
current_tracks.candidate['*']
Out[8]: 
status
*           Bob
*         Alice
Name: candidate, dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM