我是熊猫的新手,实际上也是编码的新手,我很肯定,对于大多数问题来说都很简单。
我有两个数据框。我需要从它们两个中获取一列,以获取列值的频率表。第一个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
答案 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]
但是也许可以有一种更优雅的方式...