[英]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.