python - 替换 Pandas 数据框中的值
问题描述
我想编辑一个 Pandas 数据框,你可以从这里获取数据集。 样本数据集
如您所见,每个“区域”都有一些“类别”,每个“类别”都有不同的“价格”。我想统一每个“区域”的“类别”,“类别”的值应该是每个“区域”的底部。换言之,“类别”的某些值会发生如下变化。
之前:地区:A,类别:1,价格:500
之后:地区:A,类别:2,价格:500
我知道可以按如下方式通过数据透视表编辑此数据框。但是在这种情况下,我无法统一和显示“类别”的值。
pd.pivot_table(df, values="price", index=["area",], aggfunc='sum')
如果您提供统一类别值的想法,我将不胜感激。
解决方案
你可以试试这个,虽然它可能不是最好的选择。
使用您提到的代码后:
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
推荐阅读
- javascript - 锚标记重定向到另一个部分
- bootstrap-table - 如何在 bootstrapTable 中以编程方式禁用复选框?
- android - 修复 Async Try Catch 中的 NullpointException (doInBackground()
- python - 带有箭头键的程序中出现奇怪的故障
- javascript - Express app.use 未发送正确的虚假数据
- android - 打开最近的片段底部导航活动
- azure - 带有实体框架或普通 Sql 查询的 Azure 函数
- elasticsearch - 最终一致性——如何避免幻象
- log4j2 - 在运行时修改现有的 log4j2 FileAppender 配置
- amazon-web-services - 为什么 AWS Glue 会生成多个 json 文件?