【问题标题】:How to replace grouped dataframe with dict pandas python如何用dict pandas python替换分组数据框
【发布时间】:2018-03-12 21:35:15
【问题描述】:

我有一个数据框:

date | brand | red | blue | green
---------------------------------
2017 | BMW   |  2  |  1   |   0
     |  GM   |  0  |  1   |   0
2018 | BMW   |  0  |  0   |   1
     |  GM   |  1  |  2   |   0

这是以下行的结果:

pd.pivot_table(df.reset_index(),index=['date','brand'],columns='color',values='index',aggfunc='count').fillna(0)

应用于这个初始DataFrame:

date | brand | color
--------------------
2017 | BMW   | red
2017 | GM    | blue
2017 | BMW   | blue
2017 | BMW   | red
2018 | BMW   | green
2018 | GM    | blue
2018 | GM    | blue
2018 | GM    | red

是否有可能以某种方式用字典替换分组数据框中的条目 BMW、GM,比如说

di = {'BMW': 1, 'GM': 2}

我尝试了简单的df.replace({'brand': di}),但似乎品牌列不在数据框中,尽管我可以看到它。

【问题讨论】:

  • 你想要df = df.replace(di) 吗?
  • 首字母很大,所以需要很多时间。否则分组只有几个条目

标签: python pandas replace pivot-table pandas-groupby


【解决方案1】:

您需要renameMultiIndex 的值替换为di

df = df.rename(di)
#same as
#df = df.rename(index=di)
print (df)
color       blue  green  red
date brand                  
2017 1       1.0    0.0  2.0
     2       1.0    0.0  0.0
2018 1       0.0    1.0  0.0
     2       2.0    0.0  1.0

当您将 dict 传递给 rename 时,当函数遇到 key 时,它将被 value 替换。

【讨论】:

  • 它有效,我只是不明白它是如何知道要重命名的?
  • 我认为是df = df.rename(index=di)的快捷方式
  • index 是默认值,所以它工作。对于替换列,使用df = df.rename(columns=di)
  • 所以如果我在日期列中有“BMW”,它仍然会被重命名吗?
  • 否,因为没有列关键字。
猜你喜欢
  • 2021-10-15
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 2013-08-03
相关资源
最近更新 更多