我有一个熊猫数据框: x_axis y_axis data0 Cheese farms 41 wales Cheese 3可以使用以下代码生成:import pandascols=['x_axis','y_axis','data']row1=['Cheese','farms',4]row2=['wales','Cheese',3]data=pandas.DataFrame([row1,row2],columns=cols)print data实际上,我拥有的数据要大得多,而x和y axis是热图的标签。因为这些标签通常很大,所以我想枚举它们并用一个索引替换它们(在x和y axes两者中,也就是说,如果cheese在1中是x,在)。我还需要能够编写将新索引映射到其原始值的图例。所需的输出可能看起来像这样: x_axis y_axis data0 1 2 41 3 1 3那么传说将是:cheese=1farms=2wales=3有人可以给我一些关于如何以编程方式执行此操作的建议吗? 最佳答案 您需要categorical variables。因为要转换多列中的值,所以需要将stack()转换为序列,然后调用astype:>>> s = df.loc[:, ['x_axis', 'y_axis']].stack().astype('category')>>> s0 x_axis Cheese y_axis farms1 x_axis wales y_axis Cheesedtype: categoryCategories (3, object): [Cheese, farms, wales]s现在是具有分类类型的Series:每个唯一的字符串都映射到一个整数。如果使用.cat访问器,则可以获取每个分类变量的整数代码。使用unstack()将带给您一个DataFrame:>>> s.cat.codes.unstack() x_axis y_axis0 0 11 2 0这意味着您可以使用以下命令将这些整数列分配回原始列:>>> df.loc[:, ['x_axis', 'y_axis']] = s.cat.codes.unstack()>>> df x_axis y_axis data0 0 1 41 2 0 3字符串到整数的映射由s.cat.categories以索引的形式给出(因此,“奶酪” = 0,“农场” = 1,“威尔士” = 2):>>> s.cat.categoriesIndex(['Cheese', 'farms', 'wales'], dtype='object')关于python - 用整数替换pandas DataFrame的字符串元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36600354/
10-12 18:11