为了理解我的问题,我首先应该指出,R datatables不仅仅是带有语法糖的R数据框,它们之间存在重要的行为差异:datatables中的列赋值/修改通过引用避免将整个对象复制到内存中(请参见此Quora答案中的示例),而在dataframes中则不然。
我已经多次发现,由于data.table的行为方式导致的速度和内存差异是至关重要的因素,这使得人们可以处理一些大型数据集,而使用data.frame的方法则不可能。
因此,我想知道的是:在Python中,Pandas的数据框在这方面的行为如何?
奖励问题:如果Pandas的数据框更接近于R数据框而不是R datatables,并且具有相同的缺点(在赋值/修改列时完全复制对象),那么是否有一个类似于R的data.table包的Python等价物?
按评论请求编辑:代码示例:
R数据框:
在Pandas中:
我已经多次发现,由于data.table的行为方式导致的速度和内存差异是至关重要的因素,这使得人们可以处理一些大型数据集,而使用data.frame的方法则不可能。
因此,我想知道的是:在Python中,Pandas的数据框在这方面的行为如何?
奖励问题:如果Pandas的数据框更接近于R数据框而不是R datatables,并且具有相同的缺点(在赋值/修改列时完全复制对象),那么是否有一个类似于R的data.table包的Python等价物?
按评论请求编辑:代码示例:
R数据框:
# renaming a column
colnames(mydataframe)[1] <- "new_column_name"
R数据表:
# renaming a column
library(data.table)
setnames(mydatatable, 'old_column_name', 'new_column_name')
在Pandas中:
mydataframe.rename(columns = {'old_column_name': 'new_column_name'}, inplace=True)
inplace=True
通常意味着底层数据的指针会被移动,而Python对象保持其身份,但这并不会防止数据的复制。 - juanpa.arrivillaga