循环遍历一列并填写功能Pandas Dataframe Python中的行

时间:2018-01-30 10:48:19

标签: python pandas loops dataframe

我正在尝试遍历数据帧。特别是通过日期列,这意味着每个日期我都会获得该日期的x,y和z值,并将其填入我定义的函数中。不知怎的,我不确定我怎么称呼它。我的代码如下所示:

import pandas as pd

def calc_funct(x, y, z):

    func = x*y*z

    return func

if __name__ == '__main__':

    df = pd.read_csv('C:/Data.csv')

    for column in df:

        results = calc_funct(df['x'], df['y'], df['z'])
        print(result)

输入如下所示:

           date   x   y   z
    0  2017-11-11  18  17   7
    1  2017-11-11  16  19   3
    2  2017-11-11  13  14   2
    3  2017-11-11  12  13   1
    4  2017-11-11  11  12   9
    5  2017-11-11  10  11  10
    6  2017-11-11  21  10  11
    7  2017-11-12  13  19  12
    8  2017-11-13  18  17  12
    9  2017-11-14   9  10  20
   10  2017-11-15   2  20  13
   11  2017-11-18  13  13   9
   12  2017-11-19  18  14  16
   13  2017-11-20  14  11  19
   14  2017-11-21  18  15  19

对于2017-11-11日期,我会计算这些值(例如,在该日期添加/减去所有值)并存储它,例如在列表中。然后迭代2017-11-12等下一个日期...

2 个答案:

答案 0 :(得分:4)

在pandas中,您可以使用apply方法。

df.apply(lambda v : calc_funct(v["x"], v["y"], v["z"]), axis=1)

注意axis=1迭代行,axis=0用于迭代列。

答案 1 :(得分:2)

如果您想要所有列+新列,这是您的功能的结果,您可以这样做:

df['result'] = calc_funct(df['x'], df['y'], df['z'])

或仅使用其他代码行dateresult

df = df[['date','result']]

修改

result = []
for index, row in df.iterrows():
    result.append(row['date'])
    result.append(calc_funct(row['x'], row['y'], row['z']))
print result