如何最好地连续计算每个切片的计算并将输出保存为新的数据帧

时间:2014-11-16 02:07:07

标签: python pandas

我的问题涉及如何为pandas数据帧中的每一行进行计算,但是在每行的切片上进行计算,然后将得到的计算输出为新的数据帧,我可以将其保存为txt文件。

例如,假设我想输出一个数据帧,该数据帧具有第0,1和2列中数据的平均值(对于每一行)以及第3,4和5列的平均值。

我找到了如何对列进行切片,这是我到目前为止所提出的(仅在第0行运行它)。

for i in df:
  if i == 0:
     a = df.ix[:,0:3].mean()
     b = df.ix[:,3::].mean()

print a, b

输出是这样的:

0    0.000002
1    0.000001
2    0.000001
3    0.000002
dtype: float64 3    0.000002
4    0.000001
5    0.000001 
6    0.000002
7    0.000001
dtype: float64

我的问题是:

1)我不明白这个输出,因为我只期望两个数字:第一个切片的平均值(a)和第二个切片的平均值(b)..我哪里出错,或者这不是正确的方法来处理这项任务?

2)如何将结果存储在新数据帧中并将其另存为txt文件

1 个答案:

答案 0 :(得分:4)

你不需要任何循环。有了熊猫,如果你要循环,你可能会做一些非常错误的事情。只需使用iloc属性选择所有行和列子集,然后使用mean调用axis=1方法:

import pandas
import numpy

numpy.random.seed(0)
df = pandas.DataFrame(numpy.round(numpy.random.normal(size=(10, 5)),2))
means = pandas.DataFrame(df.iloc[:, :3].mean(axis=1), columns=['means'])
print(means)

        means
0    1.046667
1   -0.060000
2    0.783333
3    0.536667
4   -0.346667
5   -0.530000
6   -0.120000
7    0.863333
8   -1.393333
9   -0.303333
dtype: float64

由于means方法会返回一个系列,因此您必须明确地将mean设为数据框。

要将其另存为制表符分隔的文本文件,请使用:means.to_csv('means.txt', sep='\t')