我對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