擅长:python、mysql、java
<p>您可以使用pandas<code>merge</code>函数直接合并这两者。
这里的诀窍是,您实际上想要将<code>datadf</code>中的<em>国家</em>列与您的<code>borderdf</code>中的<em>邻居</em>列合并。
然后使用<code>groupby</code>和<code>mean</code>得到平均邻近gdp。
最后,与数据合并,得到该国的国内生产总值。
例如:</p>
<pre><code>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'])
</code></pre>