我很难使用通过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
这样的功能是否适用于熊猫?
我没有收到任何错误,在检查结果时没有任何变化,我仍然有一列包含行中的所有值。
感谢您的任何见解。
答案 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}}。那是因为我减少了各行。另请注意,columns
是df
,它是具有单个轴的numpy数组的type(df.mean())
等价物,即向量。这是设计的。当它打印到控制台时,它可能看起来像一样,但它与Series
数组的行为几乎完全相同,因为它被视为一列而不是一行{{1} 1}}。
但是在pandas
中,numpy
个对象始终被视为列,除非用户明确请求行。例如,numpy
的行可以作为pandas
个对象访问(尽管对于异构列来说这通常是低效的)。这也是Series
的工作原理:单个行和列是1D数组。
所以要回答你的问题,就像1D DataFrame
数组在调用Series
时返回自身一样,numpy
对象也是如此。