将列添加到具有新数据的dataFrame吗?

时间:2018-11-27 03:21:01

标签: python pandas

在大熊猫中,我已经从CSV导入创建了一个数据框。

data = pd.read_csv('pathToCSV', index_col=[0],usecols=[0,2,3],names=['Date','High','Low'])

输出看起来像这样-

2009.09.18  112  111
2009.09.19  114  222

现在,如果我想逐行计算两列的平均值,然后将该值添加为新列怎么办? 我所做的是

average = (data[1]+data[2])/2

然后

data.join(average)

但是我得到一个错误!我说的对吗?

2 个答案:

答案 0 :(得分:1)

我认为您只是在寻找mean函数,您希望将其按行(axis = 1)应用于列HighLow: / p>

# starting with frame:
>>> data
         Date  High  Low
0  2009.09.18   112  111
1  2009.09.19   114  222

# Use:
data['row_average'] = data[['High','Low']].mean(axis=1)

# and you end up with the frame:
>>> data
         Date  High  Low  row_average
0  2009.09.18   112  111        111.5
1  2009.09.19   114  222        168.0

答案 1 :(得分:0)

尽管sacul绝对正确,但是您也可以考虑以下解决方案。

User::ROLES
.map { |r| "#{r.humanize}" }
.map { |r| r.split.map(&:capitalize).join(' ') }

此方法的优点是您可以定义任何函数,然后将其应用于def avg(x,y): return (x+y)/2 df['row_avg'] = df[['High','Low']].apply(lambda x:avg(*x),axis=1) 行。