我对Pandas非常陌生,但我一直在阅读它,以及在处理大数据时速度如何。使用熊猫数据框的最有效方式
我设法创建一个数据帧,而我现在有一个熊猫数据帧,看起来是这样的:
0 1
0 1 14
1 2 -1
2 3 1817
3 3 29
4 3 25
5 3 2
6 3 1
7 3 -1
8 4 25
9 4 24
10 4 2
11 4 -1
12 4 -1
13 5 25
14 5 1
列0是作者的id和列1是笔者对出版物的引用数量(-1表示零引用)。每行代表作者的不同出版物。
我试图计算每个作者的h指数。 h指数定义为作者所引用的h次出版物的数量至少为h次。因此,对于作者:
作者1具有1名
作者2 h指数具有0
作者3 h指数具有3
作者4 h指数具有h指数2
笔者5具有1
h指数这是这样我目前做的,它涉及到很多循环的:
current_author=1
hindex=0
for index, row in df.iterrows():
if row[0]==current_author:
if row[1]>hindex:
hindex+=1
else:
print "author ",current_author," has h-index:", hindex
current_author+=1
hindex=0
if row[1]>hindex:
hindex+=1
print "author ",current_author," has h-index:", hindex
我的实际数据库中有超过300万位作者。如果我循环每一个这将需要几天计算。我试图找出你认为是解决这个问题的最快方法?
提前致谢!
它的工作原理!和美丽!谢谢埃德:)))))) – BKS
@BKS我不认为这个解决方案是正确的......如果作者3的三个第一条目等于3(而不是1817,29,25),h指数仍然是3,而这段代码会给0。我认为我的代码在下面(尽管不那么优雅)在这种情况下给出了正确的答案。 –
@JulienSpronck是的,我认为你是对的我只需要改''''''=' – EdChum