您可以直接合並使用大熊貓merge
函數。 這裏的訣竅是,您實際上想要合併您的datadf
中的國家列與borderdf
中的鄰居列。 然後使用groupby
和mean
來獲得平均鄰居gdp。 最後,與數據合併以獲得國家的GDP。 例如:
import pandas as pd
from StringIO import StringIO
border_csv = '''
country, neighbor
sweden, norway
sweden, denmark
denmark, germany
denmark, sweden
'''
data_csv = '''
country, gdp, year
sweden, 5454, 2004
sweden, 5676, 2005
norway, 3433, 2004
norway, 3433, 2005
denmark, 2132, 2004
denmark, 2342, 2005
'''
borders = pd.read_csv(StringIO(border_csv), sep=',\s*', header=1)
data = pd.read_csv(StringIO(data_csv), sep=',\s*', header=1)
merged = pd.merge(borders,data,left_on='neighbor',right_on='country')
merged = merged.drop('country_y', axis=1)
merged.columns = ['country','neighbor','gdp','year']
grouped = merged.groupby(['country','year'])
neighbor_means = grouped.mean()
neighbor_means.columns = ['neighbor_gdp']
neighbor_means.reset_index(inplace=True)
results_df = pd.merge(neighbor_means,data, on=['country','year'])
爲什麼這個問題認爲是「板」,任何人都在關心解釋? –
我也不明白爲什麼它太寬泛。我認爲標題中的問題措辭過於寬泛,但問題本身非常具體。 OP給出了示例輸入和示例輸出。 – exp1orer
由於描述您的需求並要求某人爲您編寫代碼或解釋如何編寫代碼的問題被認爲是堆棧溢出的主題,但沒有一個標準的緊密原因適用。有些人似乎認爲「太寬泛」,「不清楚你問的是什麼」或者「缺乏足夠的信息來診斷問題」總是足以涵蓋這些類型的問題,但這種情況說明了爲什麼他們經常不得到正確的信息。 –