如何最好地对一行中的每个切片进行计算,并将输出保存为新的datafram

2024-04-16 16:47:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是如何对数据帧中的每一行进行计算,但要对每一行的切片进行计算,然后将结果输出为一个新的数据帧,我可以将其另存为txt文件。你知道吗

例如,假设我想要输出一个dataframe,它具有第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文件


Tags: 文件数据intxtdataframedfforif
1条回答
网友
1楼 · 发布于 2024-04-16 16:47:04

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

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')

相关问题 更多 >