我正在尝试遍历数据帧。特别是通过日期列,这意味着每个日期我都会获得该日期的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等下一个日期...
答案 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'])
或仅使用其他代码行date
和result
:
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