转置功能没有错误,结果没有变化

时间:2013-08-18 04:37:12

标签: python csv pandas transpose

我很难使用通过pandas和scipy提供的转置功能:

我的问题是我在一个包含多行的单列中保存到csv文件,实际上它应该是相反的方式(几列和一行)。

这是我正在使用的(基于熊猫设置的平均值 - “pd”):

mid = pd.read_csv("Experiment12.csv",usecols=[0,1,2],skiprows=[0,1,2,3,4,5,6,7]).mean()

mid.T这样的功能是否适用于熊猫?

我没有收到任何错误,在检查结果时没有任何变化,我仍然有一列包含行中的所有值。

感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

您可以使用单个列DataFrame进行读写:

import pandas.util.testing as tm
from pandas import read_csv

df = tm.makeTimeDataFrame()
dfa = df[['A']].T
dfa.to_csv('the_csv.csv')
dfa_hat = read_csv('the_csv.csv', index_col=0)
dfa_hat.T

但我怀疑这不是你的问题。您误解了当您致电DataFrame.mean()时,您沿着轴执行缩减(默认情况下为axis == 0)。

让我们看一个简单的例子:

In [272]: df = DataFrame(randn(5, 2), columns=list('ab'))

In [273]: df
Out[273]:
       a      b
0  0.056 -0.056
1 -0.384  1.153
2  0.524 -1.545
3  1.082  1.665
4 -0.593 -0.412

In [274]: df.mean()
Out[274]:
a    0.137
b    0.161
dtype: float64

In [275]: type(df.mean())
Out[275]: pandas.core.series.Series

请注意index的{​​{1}}是df.mean()的{​​{1}}。那是因为我减少了各行。另请注意,columnsdf,它是具有单个轴的numpy数组的type(df.mean())等价物,即向量。这是设计的。当它打印到控制台时,它可能看起来像一样,但它与Series数组的行为几乎完全相同,因为它被视为一列而不是一行{{1} 1}}。

但是在pandas中,numpy个对象始终被视为列,除非用户明确请求行。例如,numpy的行可以作为pandas个对象访问(尽管对于异构列来说这通常是低效的)。这也是Series的工作原理:单个行和列是1D数组。

所以要回答你的问题,就像1D DataFrame数组在调用Series时返回自身一样,numpy对象也是如此。