2017-05-12 12 views
0
print(ScimEn.head(20)) 
    Rank    Country 
0  1    China 
1  2  United States 
2  3    Japan 
3  4  United Kingdom 
4  5 Russian Federation 
5  6    Canada 
6  7    Germany 
7  8    India 
8  9    France 
9  10   South Korea 
10 11    Italy 
11 12    Spain 
12 13    Iran 
13 14   Australia 
14 15    Brazil 
15 16    Taiwan 
16 17    Turkey 
17 18    Norway 
18 19   Netherlands 
19 20    Sweden 

このDFを別の行にマージしようとしていますが、ランク付けされた行は[0:15]です。私は定期的に行うと は:パンダ特定の行データフレームマージ

dfs = [ScimEn, energy, GDP[year].reset_index()] 
newdf = reduce(lambda left, right: pd.merge(left, right, on='Country'), dfs) 
newdf = newdf.set_index('Country') 
print(len(newdf)) 

私は140のエントリのDFがありますが、私は上記の順位ごとに15項目のDFを持っていると思います。

dfs = [ScimEn.where(ScimEn['Rank'] < 15), energy, GDP[year].reset_index()] 
newdf = reduce(lambda left, right: pd.merge(left, right, on='Country'), dfs) 
newdf = newdf.set_index('Country') 
print(len(newdf)) 

をしかし、それは唯一の4つのエントリが返されました: 私もしようとしました。

+0

は、あなたがにマージしようとしているDFSのサンプルを投稿することができますか? –

+0

ScimEnデータフレームを最初に必要なものにスライスしてから、通常どおりにマージすることができます。 'ScimEn [ScimEn ['Rank'] <15>'は必要なdfを返します。 –

答えて

1

私はあなたがqueryでフィルタリングすることができると思う:Phong Phung commentを述べたように

dfs = [ScimEn.query("Rank < 15"), energy, GDP[year].reset_index()] 
newdf = reduce(lambda left, right: pd.merge(left, right, on='Country'), dfs) 
newdf = newdf.set_index('Country') 
print(len(newdf)) 

またはboolean indexingによって:

dfs = [ScimEn[ScimEn['Rank'] < 15], energy, GDP[year].reset_index()] 
newdf = reduce(lambda left, right: pd.merge(left, right, on='Country'), dfs) 
newdf = newdf.set_index('Country') 
print(len(newdf)) 
関連する問題