Tag: pandas

什么是通过pandas循环数据框的最有效的方法?

我想以顺序的方式对数据框中的财务数据执行我自己的复杂操作。 例如,我正在使用以下来自雅虎财经的 MSFT CSV文件: Date,Open,High,Low,Close,Volume,Adj Close 2011-10-19,27.37,27.47,27.01,27.13,42880000,27.13 2011-10-18,26.94,27.40,26.80,27.31,52487900,27.31 2011-10-17,27.11,27.42,26.85,26.98,39433400,26.98 2011-10-14,27.31,27.50,27.02,27.27,50947700,27.27 …. 然后我做了以下几点: #!/usr/bin/env python from pandas import * df = read_csv('table.csv') for i, row in enumerate(df.values): date = df.index[i] open, high, low, close, adjclose = row #now perform analysis on open/close based on date, etc.. 那是最有效的方法吗? 考虑到pandas的速度的重点,我会假设必须有一个特殊的函数遍历值的方式,也可以检索索引(可能通过一个生成器是内存效率)? df.iteritems不幸的是只能逐列迭代。

地图,applymap和apply方法在Pandas中的区别

你能告诉我什么时候使用这些vector化方法的基本例子? 我看到map是一个Series方法,而其余的是DataFrame方法。 尽pipe我对apply和apply applymap方法感到困惑。 为什么我们有两种方法将函数应用于DataFrame? 再一次,说明这个用法的简单例子会很棒! 谢谢!

将字典列表转换为Dataframe

我有这样的字典列表: [{'points': 50, 'time': '5:00', 'year': 2010}, {'points': 25, 'time': '6:00', 'month': "february"}, {'points':90, 'time': '9:00', 'month': 'january'}, {'points_h1':20, 'month': 'june'}] 我想把它变成一个像这样的pandasDataFrame : month points points_h1 time year 0 NaN 50 NaN 5:00 2010 1 february 25 NaN 6:00 NaN 2 january 90 NaN 9:00 NaN 3 june NaN 20 NaN NaN 注意:列的顺序无关紧要。 最终目标是将其写入文本文件,这似乎是我能find的最佳解决scheme。 如何将字典列表变成pandas数据框如上所示?

pandas iloc vs ix vs loc解释?

有人可以解释这三种切片的方法是不同的吗? 我看过这些文档 ,而且我看到了这些 答案 ,但是我仍然发现自己无法解释三者是如何不同的。 对我来说,他们似乎是可以互换的,因为他们处于较低层次的切片。 例如,假设我们想获得DataFrame的前五行。 这三个工作怎么样? df.loc[:5] df.ix[:5] df.iloc[:5] 有人可以提出三个使用区分更清楚的案例吗?

如何获得pandas数据框的行数?

我试图得到与Pandas的dataframeDF的行数,这里是我的代码。 方法1: total_rows = df.count print total_rows +1 方法2: total_rows = df['First_columnn_label'].count print total_rows +1 这两个代码片段给我这个错误: TypeError:不支持的操作数types为+:'instancemethod'和'int' 我究竟做错了什么? 根据@root给出的答案 ,检查df长度的最佳(最快)方法是调用: len(df.index)

如何删除某些列中的值为NaN的Pandas DataFrame的行

我有一个DataFrame : >>> df STK_ID EPS cash STK_ID RPT_Date 601166 20111231 601166 NaN NaN 600036 20111231 600036 NaN 12 600016 20111231 600016 4.3 NaN 601009 20111231 601009 NaN NaN 601939 20111231 601939 2.5 NaN 000001 20111231 000001 NaN NaN 然后我只想要EPS不是NaN的logging,也就是df.drop(….)将返回dataframe如下: STK_ID EPS cash STK_ID RPT_Date 600016 20111231 600016 4.3 NaN 601939 20111231 601939 2.5 NaN […]

在pandas数据框中select列

我有不同的列中的数据,但我不知道如何提取它保存在另一个variables。 index abc 1 2 3 4 2 3 4 5 如何select'b' , 'c'并将其保存到df1中? 我试过了 df1 = df['a':'b'] df1 = df.ix[:, 'a':'b'] 似乎没有工作。 任何想法将有助于感谢。

如何迭代Pandas中的DataFrame中的行?

我有pandas的数据框: import pandas as pd inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}] df = pd.DataFrame(inp) print df 输出: c1 c2 0 10 100 1 11 110 2 12 120 现在我想遍历上面的帧的行。 对于每一行,我都希望能够通过列的名称访问其元素(单元格中的值)。 所以,例如,我想有这样的事情: for row in df.rows: print row['c1'], row['c2'] pandas可以这样做吗? 我发现了类似的问题 。 但这并不能给我我需要的答案。 例如,build议在那里使用: for date, row in df.T.iteritems(): 要么 for row in df.iterrows(): 但是我不明白row对象是什么,以及我如何使用它。

如何从数据框的单元格中获取值?

我已经构build了一个条件,从我的数据框中提取一行: d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)] 现在我想从一个特定的栏目中获得价值: val = d2['col_name'] 但是,结果我得到一个包含一行和一列( 即一个单元格)的数据框。 这不是我所需要的。 我需要一个值(一个浮点数)。 我怎么能在pandas呢?

并行化后,pandasgroupby

我已经使用了rosetta.parallel.pandas_easy并行化后应用,例如: from rosetta.parallel.pandas_easy import groupby_to_series_to_frame df = pd.DataFrame({'a': [6, 2, 2], 'b': [4, 5, 6]},index= ['g1', 'g1', 'g2']) groupby_to_series_to_frame(df, np.mean, n_jobs=8, use_apply=True, by=df.index) 然而,有没有人想出了如何并行化返回数据框的函数呢? 正如预期的那样,此代码不能正常工作。 def tmpFunc(df): df['c'] = df.a + df.b return df df.groupby(df.index).apply(tmpFunc) groupby_to_series_to_frame(df, tmpFunc, n_jobs=1, use_apply=True, by=df.index)