Python pandas中行与列之间的复杂操作

Python pandas中行与列之间的复杂操作,python,pandas,Python,Pandas,我一直在尝试构造一个函数来计算Heiken Ashi蜡烛,从而以不同的方式形象化市场价格。为此,我使用python的pandas库。在不同position的列和行之间存在一些必须执行的操作(例如,使用前一个单元格添加值并更新实际值),因此我已设法使用循环来执行这些操作,但我认为这一定是一种最容易扩展的方法。有人能告诉我是否真的有可能从我的代码中消除循环吗 def heikenashi(df): df['HA_Close'] = df[['Open','High','Close','Lo

我一直在尝试构造一个函数来计算Heiken Ashi蜡烛,从而以不同的方式形象化市场价格。为此,我使用python的pandas库。在不同position的列和行之间存在一些必须执行的操作(例如,使用前一个单元格添加值并更新实际值),因此我已设法使用循环来执行这些操作,但我认为这一定是一种最容易扩展的方法。有人能告诉我是否真的有可能从我的代码中消除循环吗

def heikenashi(df):

    df['HA_Close'] = df[['Open','High','Close','Low']].mean(axis=1)
    ha_o = (df['Open'] + df['Close']) / 2  #Creating a Variable
    df['HA_Open'] = 0.0
    df['HA_High'] = 0.0
    df['HA_Low'] = 0.0

    df.ix[1, 'HA_Open'] = (df['Open'][0] + df['Close'][0]) / 2

    i = 2
    while i < len(df.index):
        df.ix[i, 'HA_Open'] = (df.ix[i-1, 'HA_Open'] + df.ix[i-1, 'Close']) / 2
        df.ix[i, 'HA_High'] = df.ix[i-1, ['High', 'HA_Open', 'HA_Close']].max()
        df.ix[i, 'HA_Low'] = df.ix[i-1, ['Low', 'HA_Open', 'HA_Close']].min()
        i += 1

    return df
def-heikenashi(df):
df['HA_Close']=df[['Open'、'High'、'Close'、'Low']]。平均值(轴=1)
hau o=(df['Open']+df['Close'])/2#创建一个变量
df['HA_Open']=0.0
df['HA_High']=0.0
df['HA_Low']=0.0
df.ix[1,'HA_Open']=(df['Open'][0]+df['Close'][0])/2
i=2
而i

非常感谢你的帮助

你不能这样移位:
df['HA_Open']=(df['HA_Open'].shift()-df['HA_Close'].shift())/2
你可以使用
applymap
函数来实现这一点。请参阅文档:@WoodyPride不是单移位,我认为更多的是与rolling()有关,因为值取决于之前计算的行。您不能这样移位:
df['HA_Open']=(df['HA_Open'].shift()-df['HA_Close'].shift())/2
您可以使用
applymap
函数来实现这一点。请参阅文档:@WoodyPride不是单移位,我认为更多的是与rolling()有关,因为值取决于之前计算的行。