【发布时间】:2013-09-29 12:45:36
【问题描述】:
我是 Pandas 的新手,我正在尝试将它应用到我已经编写的脚本中。 我有一个 csv 文件,我从中提取数据,并使用列 'candidate'、'final track' 和 'status'我的数据框。
我的问题是,我想过滤数据,可能使用 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['*']之类的东西,但这不起作用
抱歉,如果这很明显,我有点费力地理解它。
【问题讨论】:
-
当您在读取 csv 后过滤您的 cols 时,过滤对
read_csv的调用会更有效,就像df=read_csv(filename, usecols=[0,10,11])一样,或者您可以传递列名称列表df=read_csv(filename, usecols=['candidate', 'final track', 'status'])它会加载得更快 -
干杯埃德。我有两个问题,1. 您解释的 2 种方法不会产生相同的结果?(第一种给出了我想要的)。2.)您将如何使用列名索引这些列?
-
我假设列名与您的输出相同,但可能它们不是,这可以解释 1. 第二个代码 sn-p 是正确的语法和形式,但由于某种原因是没有产生相同的结果,您需要了解原因,您可以阅读更多关于参数here