我目前把注意力从R转向Python。在R中,我经常使用data.table,但有时很难找到Python中一些函数的等价物。
我有一个像这样的pandas数据框:
我需要创建一列,该列基于A和B递增地从1开始计数,以指示B的递增顺序。因此,我首先创建排序后的数据框,我要创建的列是以下的C:df = pd.DataFrame({'A':['abc','def', 'def', 'abc', 'def', 'def','abc'],'B':[13123,45,1231,463,142131,4839, 4341]})
A B 0 abc 13123 1 def 45 2 def 1231 3 abc 463 4 def 142131 5 def 4839 6 abc 4341
A B C
1 abc 463 1
6 abc 4341 2
0 abc 13123 3
3 def 45 1
2 def 1231 2
5 def 4839 3
4 def 142131 4
在R中,使用library(data.table),可以轻松地在一行代码内创建一个新列并将其添加到原始数据表中:
我查看了一些资料,认为可能可以利用以下内容:df[, C := 1:.N, by=A]
但不确定如何继续操作并将新列加入原始数据框。如果有人能给出任何指示,那就非常有帮助了。df.groupby('A').size()
或
df['B'].argsort()
非常感谢!
data.table
语法。你的意思是df[,C:=1:.N,by=A]
吗?另外为什么要先用setkey
,你可以随意使用by
。 - Matt Dowledf
的整个内容,这是R的data.frame
的一项(相对较差)功能,而data.table
进行了改进。如果你错过了这一点,那么你可能没有经常使用data.table
。 - Matt Dowle:=
是data.table
的一个重要特性,而你在发布问题时打上了Python和pandas的标签,作为data.table
的作者,我不希望看到data.table
在广大受众面前被错误使用。请注意语境,避免误导他人使用。 - Matt Dowle