如何用dict pandas python替换分组数据框

Posted

技术标签:

【中文标题】如何用dict pandas python替换分组数据框【英文标题】:How to replace grouped dataframe with 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) 吗? 首字母很大,所以需要很多时间。否则分组只有几个条目 【参考方案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”,它仍然会被重命名吗? 否,因为没有列关键字。

以上是关于如何用dict pandas python替换分组数据框的主要内容,如果未能解决你的问题,请参考以下文章

python正则表达式如何用已知字符串(如"aaa")替换文件中匹中的分组内容,不是匹中的全部,而是其中一个组

Pandas DF:如何用分隔符(;CSV 格式)将 '-' 替换为 '_'

pandas 在同一张表(相同的数据框)中,如何用新名称和其他行值的总和对不同的行进行分组

如何用Python优雅的合并两个Dict

使用dict替换pandas数据帧中的字符串时性能很慢

python - 如何用pandas包为python制作的子图冲掉boxplot的默认副标题