首页 > 解决方案 > 组列记录 python pandas

问题描述

取出.value_counts()时,我有一列包含以下记录。这是我的 df 列的片段

Mayo            76363
Marzo           74580
Abril           71219
Enero           70222
Junio           69692
Febrero         68943
May                30
Aabril             12
ENRO                4
Febrero-2015        1
Mayo-2018           1

取出 .value_counts () 时我只想有以下值

enero       70226
febrero     68944
marzo       74580
abril       71231
mayo        76394

知道我该怎么做吗?

谢谢

标签: pythonpandasdataframedategroup-by

解决方案


好吧,您必须在调用之前标准化月份名称df.value_counts(),以便它们正常分组。我们可以通过创建一个具有正确名称的替换字典来修复它。

从您显示的片段中,您需要将月份名称转换为正确的格式,因此,假设列名是monthvalue

# Name the columns
>>> df.columns = ["month", "value"]

# Get rid of `-` part, bring month names to lower case.
>>> df["month"] = df.month.str.split("-").str[0].str.lower()
>>> df
      month  value
0      mayo  76363
1     marzo  74580
2     abril  71219
3     enero  70222
4     junio  69692
5   febrero  68943
6       may     30
7    aabril     12
8      enro      4
9   febrero      1
10     mayo      1

# Get the dictionary of column names
>>> month_names = { i:i for i in df["month"].unique() }

# Update the month names which have error
>>> month_names["aabril"] = "abril"
>>> month_names["enro"]   = "enero"
>>> month_names["may"]    = "mayo"
>>> month_names
{'mayo': 'mayo', 'marzo': 'marzo', 'abril': 'abril', 'enero': 'enero', 'junio': 'junio', 'febrero': 'febrero', 'may': 'may', 'aabril': 'abril', 'enro': 'enero'}

# Rename the month column values
>>> df["month"] = df["month"].map(month_names)

# Now, group by month names
    >>> df.groupby("month").sum().reset_index()
     month  value
0    abril  71231
1    enero  70226
2  febrero  68944
3    junio  69692
4    marzo  74580
5     mayo  76394

推荐阅读