替换熊猫数据框中的值

时间:2020-10-25 05:29:09

标签: python pandas

我想编辑一个熊猫数据框,您可以从这里获取数据集。 Sample_dataset

如您所见,每个“区域”都有一些“类别”,每个“类别”都有不同的“价格”。我想统一每个“区域”的“类别”,并且“类别”的值应位于每个“区域”的底部。换句话说,“类别”的某些值将发生如下变化。

之前: 区域:A,类别:1,价格:500

之后: 区域:A,类别:2,价格:500

image

我知道可以通过数据透视表按如下方式编辑此数据框。但是在这种情况下,我无法统一并显示“类别”的值。

pd.pivot_table(df, values="price", index=["area",], aggfunc='sum') 

如果您提供统一类别值的想法,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以尝试一下,尽管它可能不是最佳选择。

使用您提到的代码后:

df_new = pd.pivot_table(df, values="price", index=["area",], aggfunc='sum')

我创建了一个函数,该函数可以找到每个区域的最后一个类别(其中df是原始DataFrame):

    def find_category(cat, list_categories):
        list_categories.append(df[df['area'] == cat].iloc[-1].category)

然后使用for循环搜索每个区域的最后一个类别,并将其添加到新的类别列中。然后,您可以根据需要对列进行重新排序:

list_categories = [] 

for area in df_new.index:
    find_category(area, list_categories)

df_new['category'] = list_categories
df_new = df_new[['category','price']]

输出为:

     category   price
area        
A    2          900
B    1          350
C    4          800
D    1          500