如何用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】:
您需要rename
将MultiIndex
的值替换为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 格式)将 '-' 替换为 '_'