相关疑难解决方法(0)

使用pandas循环数据帧的最有效方法是什么?

我希望以顺序方式对数据框中的财务数据执行我自己的复杂操作.

例如,我使用从Yahoo Finance获取的以下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

....
Run Code Online (Sandbox Code Playgroud)

然后我做以下事情:

#!/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..
Run Code Online (Sandbox Code Playgroud)

这是最有效的方式吗?鉴于对熊猫速度的关注,我认为必须有一些特殊的函数来迭代遍历值,同时也检索索引(可能通过生成器来节省内存)?df.iteritems遗憾的是,只能逐列迭代.

python performance for-loop dataframe pandas

306
推荐指数
10
解决办法
41万
查看次数

为什么pandas应用计算两次

我在熊猫的DataFrame对象上使用apply方法.当我的DataFrame有一个列时,看起来应用函数被调用两次.问题是为什么?而且,我可以阻止这种行为吗?

码:

import pandas as pd

def mul2(x):
    print 'hello'
    return 2*x

df = pd.DataFrame({'a': [1,2,0.67,1.34]})

print df.apply(mul2)
Run Code Online (Sandbox Code Playgroud)

输出:

hello
hello

0  2.00
1  4.00
2  1.34
3  2.68
Run Code Online (Sandbox Code Playgroud)

我正在应用的函数中打印'hello'.我知道它被应用了两次因为'你好'打印了两次.更重要的是,如果我有两列,'你好'打印3次.更进一步的是当我打电话给'hello'列打印4次时.

码:

print df.a.apply(mul2)
Run Code Online (Sandbox Code Playgroud)

输出:

hello
hello
hello
hello
0    2.00
1    4.00
2    1.34
3    2.68
Name: a, dtype: float64
Run Code Online (Sandbox Code Playgroud)

python apply pandas

27
推荐指数
3
解决办法
4965
查看次数

如何在数据帧的每一行上应用函数?

我是Python新手,我不知道如何解决以下问题.

我有一个功能:

def EOQ(D,p,ck,ch):
    Q = math.sqrt((2*D*ck)/(ch*p))
    return Q
Run Code Online (Sandbox Code Playgroud)

说我有数据帧

df = pd.DataFrame({"D": [10,20,30], "p": [20, 30, 10]})

    D   p
0   10  20
1   20  30
2   30  10

ch=0.2
ck=5
Run Code Online (Sandbox Code Playgroud)

chck是浮点类型.现在我想将公式应用于数据帧的每一行,并将其作为额外的行'Q'返回.一个例子(不起作用)将是:

df['Q']= map(lambda p, D: EOQ(D,p,ck,ch),df['p'], df['D']) 
Run Code Online (Sandbox Code Playgroud)

(仅返回'map'类型)

在我的项目中我需要更多这种类型的处理,我希望找到有用的东西.

python function pandas

14
推荐指数
2
解决办法
3万
查看次数

标签 统计

pandas ×3

python ×3

apply ×1

dataframe ×1

for-loop ×1

function ×1

performance ×1