我不同意 Cpfohl 的评论 - 可能是因为我自己也经历过同样的转变,而天真的用户如何能够更准确地表述问题并不明显。这实际上是目前一个活跃的开发问题,许多项目都提出了不重叠的功能(例如,在金融时间序列世界、大脑成像世界等)。
简短的回答是,python 处理表格和 csv 文件的各种库对于初学者来说不如 R 中的库好,这是多年不同级别用户的最终结果。
首先,看看 numpy.这可能是常用库中最接近的数据结构,类似于 R 中的 data.frame。特别是,您可能会喜欢 numpy.recfromcsv 函数,尽管它不如例如R 中的 read.csv(例如,它会遇到非标准行尾问题)。
对一个recarray 进行子集化很容易(尽管创建一个可能看起来很笨重):
import numpy as np
mydata = np.array([(1.0, 2), (3.0, 4)], dtype=[('x', float), ('y', int)])
mydata = mydata.view(np.recarray)
mydata[mydata.x > 2]
修改 numpy 数组的性质通常不像在 R 中那么容易,但在 numpy.lib.recfunctions 中有一个很好的函数库(必须单独导入 - 它没有简单的 import numpy )。特别是,请查看 rec_append_fields 和 rec_join 以添加列。
Numpy 有一个函数numpy.savetxt,它将接受一个简单的分隔符参数来创建一个 csv 文件,但它不会遗憾地打印列名(至少,我不认为它会打印)。因此,虽然我不鼓励添加不必要的库(因为它提供的可移植代码较少),但您可能只使用 matplotlib.mlab.rec2csv(您也会在该社区找到一些其他类似的功能 - numpy 社区正在尝试移植通常有用的数字 /数据操纵代码到 numpy 正确。谁知道,也许你会这样做?)。
你会注意到我没有回答 (4),因为那没有意义。表格不会在 python 或 R 中转置。数组或矩阵可以。因此,将您的数据转换为具有统一 dtype 的数组,然后只需使用 myarray.T。
您可能会看到的其他工具是 pytables(以及相关的包 carray)、larry、dataarray、pandas 和 tabular。特别是,dataarray 正在寻求为标记数据数组创建一个系统,该系统将作为其他项目的基础(我认为来自 larry 和 pandas 项目的开发人员也是如此)。
希望对您有所帮助!
戴夫