根据外部列表中的值安排分组方法的输出

时间:2019-06-10 14:49:30

标签: python pandas dataframe

我是熊猫的新手,实际上也是编码的新手,我很肯定,对于大多数问题来说都很简单。

我有两个数据框。我需要从它们两个中获取一列,以获取列值的频率表。第一个df的频率表按升序分组。问题在于,第二个表在输出上必须具有与第一个df相同的值顺序。

这使我认为在这种情况下,我需要使用第一张表中的有序值列表来排列第二张df的输出。 但是我不知道该怎么做。

目前,我只有这些拙劣的代码行。

df1 = Economics.groupby("Country")["Country"].count().sort_values()

keys = ['Equatorial Guinea', 'Haiti', 'Sweden']  #ordered list of countries from df1

countries = Economics1["Country"].unique().tolist()

diff = set(countries) - set(keys)
keys +=diff

我创建了国家/地区变量,以便比较df2中是否有df1中不存在的新值。

我还想到了使用字典。但是我不知道它是否有用,因为密钥和国家/地区的长度可以不同。 (尽管,如果我们要将国家/地区的值添加到键中,也许这不是问题,我不知道)

我想要得到的是频率表中的变量与df1的顺序相同。
喜欢
df1的输出是:

Equatorial Guinea            101  
Haiti                        202  
Sweden                       404  

然后df2的输出是:

Equatorial Guinea            314  
Haiti                        218  
Sweden                       509  
Netherlands                  1019

1 个答案:

答案 0 :(得分:0)

啊,答案太近了

我用以下方式解决了它:

 G = df1.groupby("Country")["Country"].count().sort_values()
 D = df2.groupby("Country")["Country"].count().sort_values()
 countries = df2["Country"].unique().tolist()
 keys = G.index.tolist()
 diff = set(countries) - set(keys)
 keys +=diff
 D = D.loc[keys]

但是也许可以有一种更优雅的方式...